码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式——桥接模式

时间:2015-06-05 00:18:10      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

桥接模式核心:处理多层继承结构,处理多维度变化的场景。将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。

桥接模式特点: 桥接模式可以取代多层继承的方案。多层继承违背了单一职责原则。复用性较差。类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。 桥接模式极大的提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。 就像一个桥将两个变化的维度连接起来。各个维度都可以独立的变化,故称之为桥模式。

应用: JDBC驱动程序

          AWT的peer架构      

          OA系统中的消息处理。

桥接模式的优点:

         将实现与抽象解耦,不再与界面之间绑定。

         抽象和实现可以独立的扩展,不会影响到对方。

         对于具体的抽象类所做的改变不会影响到客户端的使用。

Demo:

 

package com.wxisme.bridge;

/**
 * 品牌类型维度
 * @author Administrator
 *
 */
public interface Brand {
    void sale();
}

class Lenovo implements Brand {

    @Override
    public void sale() {
        System.out.println("联想电脑");
    }
    
}

class Dell implements Brand {
    
    @Override
    public void sale() {
        System.out.println("戴尔电脑");
    }
    
}

class Shenzhou implements Brand {
    
    @Override
    public void sale() {
        System.out.println("神州电脑");
    }
    
}

/**
 * 电脑类型维度
 * @author Administrator
 *
 */
public class Computer {
    
    protected Brand brand;
    
    public Computer(Brand b) {
        this.brand = b;
    }
    
    public void sale(){
        brand.sale();
    }
    
}

class Desktop extends Computer {

    public Desktop(Brand b) {
        super(b);
    }
    
    @Override
    public void sale() {
        super.sale();
        System.out.println("台式电脑");
    }
}

class Laptop extends Computer {
    
    public Laptop(Brand b) {
        super(b);
    }
    
    @Override
    public void sale() {
        super.sale();
        System.out.println("笔记本电脑");
    }
}

public class Client {
    public static void main(String[] args) {
        
        Computer  c1 = new Laptop(new Lenovo());
        c1.sale();
        
        Computer c2 = new Desktop(new Shenzhou());
        c2.sale();
        
        
    }
}

 

运行结果:
联想电脑
笔记本电脑
神州电脑
台式电脑

 

设计模式——桥接模式

标签:

原文地址:http://www.cnblogs.com/wxisme/p/4553362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!