设计模式-桥接

1.核心要点:处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联
2.备注:桥接模式可以取代多层继承的方案。多层继承违背了单一职责的原则,复用性较差,会导致类的数量显著增多。使用桥接模式可以极大的减少子类的个数,降低管理和维护成本
桥接模式极在的提高了系统可展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合ocp原则
3.这里写图片描述
4.示例代码:
<1>品牌

public interface Brand {
    void sale();
}
class Lenovo implements Brand{
    @Override
    public void sale() {
        System.out.println("销售联想电脑");
    }
}
class Hansee implements Brand{
    @Override
    public void sale() {
        System.out.println("销售神舟电脑");
    }
}
class Dell implements Brand{
    @Override
    public void sale() {
        System.out.println("销售dell电脑");
    }
}
<2>桥接角色
public class Computer {
    protected Brand brand;
    public Computer(Brand brand) {
        super();
        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 LabTop extends Computer{
    public LabTop(Brand brand) {
        super(brand);
    }
    @Override
    public void sale() {
        super.sale();
        System.out.println("销售笔记本");
    }
}
<3>客户端
public class Client {
    public static void main(String[] args) {
        Computer c1=new DeskTop(new Lenovo());
        c1.sale();
        Computer c2=new LabTop(new Hansee());
        c2.sale();
    }
}
//执行结果
销售联想电脑
销售台式机
销售神舟电脑
销售笔记本

上面示例利用组合的方式替代了多层继承的方式,实现computer和Brand的独立变化,扩展性增强,符合ocp原则和单一职责原则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值