设计模式-桥接
2016-02-15 17:23
344 查看
1.核心要点:处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联
2.备注:桥接模式可以取代多层继承的方案。多层继承违背了单一职责的原则,复用性较差,会导致类的数量显著增多。使用桥接模式可以极大的减少子类的个数,降低管理和维护成本
桥接模式极在的提高了系统可展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合ocp原则
3.
4.示例代码:
<1>品牌
上面示例利用组合的方式替代了多层继承的方式,实现computer和Brand的独立变化,扩展性增强,符合ocp原则和单一职责原则。
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原则和单一职责原则。
相关文章推荐
- 2.0.1 客户端需求分析实例
- iOS中 加强日志输出 开发技术总结
- 浅析Java中的访问控制权限
- 油漆费才十几刀-而人工费加起来就要400多刀
- Python基础01 Hello World!
- Flexbox,更优雅的布局
- 日志组件logback的介绍及配置使用方法
- mongodb_修改器($inc/$set/$unset/$push/$pop/upsert......)
- ulimit系统调优
- Oracle中基本sql语句
- .NET单元测试
- python
- JS中call/apply、arguments、undefined/null方法详解
- DL,DT,DD,比传统table更语义,解析更快的table列表方式
- Swift的Debug和Release宏
- BZOJ2820: YY的GCD
- F5设备控制脚本
- android 6.0 手电筒app简单实现
- Dialog 形式的 Activity
- 设计模式之工厂模式