设计模式(十)——桥接模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30604989/article/details/81714030

1、场景

  • 商城系统中常见的商品分类,以电脑为类,如何处理好商品分类销售的问题?
  • 我们可以用多继承结构实现右图的关系
  • 问题
    — 扩展性(类个数膨胀问题):
    1、如果要增加一个新的电脑类型智能手机,则要增加各个品牌下面的类
    2、如果要增加一个新的品牌,也要增加各种电脑类型的类。
    — 违反单一职责原则
    1、一个类:联想笔记本,有两个引起这个类变化的原因

2、桥接模式核心要点 

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

3、实例

品牌

* 品牌维度
 */
public interface Brand {
    void sale();
}
class Lenovo implements Brand{

    @Override
    public void sale() {
        System.out.println("Lenovo.sale");
    }
}
class Dell implements Brand{

    @Override
    public void sale() {
        System.out.println("Dell.sale");
    }
}

电脑

 * 电脑类型维度
 */
public class Computer {
    protected Brand brand;

    public Computer(Brand brand) {
        this.brand = brand;
    }

    public void sale(){
        brand.sale();
    }
}

class Desktop extends Computer{

    public Desktop(Brand brand) {
        super(brand);
    }

    @Override
    public void sale(){
        super.sale();
        System.out.println("销售台式机");
    }
}

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

测试

public class Client {
    public static void main(String[] args) {
        //销售联想的笔记本电脑
        Computer c = new Laptop(new Lenovo());
        c.sale();

    }
}

4、桥接模式总结

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

就像一个桥,将两个变化维度连接起来,各个维度都可以独立的变化。故称之为:桥模式

5、桥接模式实际开发中的应用场景

  • JDBC驱动程序
  • 银行日志管理:
    1、格式分类:操作日志、交易日志、异常日志
    2、距离分类:本地记录日志、异地记录日志
  • 人力资源系统中的奖金计算模块:
    1、奖金分类:个人奖金、团体奖金、激励奖金
    2、部门分类:人事部门、销售部门、研发部门
  • OA系统中的消息处理:
    1、业务类型:普通消息、加急消息、特急消息
    2、发送消息方式:系统内消息、手机短信、邮件

猜你喜欢

转载自blog.csdn.net/qq_30604989/article/details/81714030