设计模式之桥接模式bridge
场景
商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?
这个场景中有两个变化维度:电脑类型、电脑品牌
多层继承结构实现问题
- 扩展性问题(个数膨胀问题)
- 如果要增加一个新的电脑类型智能手机,则要增加各个品牌下面的类
- 如果要增加一个新的品牌,也要增加各种电脑类型的类
- 违反单一职责原则
- 一个类:联想笔记本,有两个引起这个类变化的原因
代码示例
public interface Computer { void sale(); } class Desktop implements Computer{ @Override public void sale() { System.out.println("销售台式机"); } } class Laptop implements Computer{ @Override public void sale() { System.out.println("销售笔记本"); } } class Pad implements Computer{ @Override public void sale() { System.out.println("销售平板"); } } //联想系列 class LenovoDesktop extends Desktop{ @Override public void sale() { System.out.println("销售联想台式机"); } } class LenovoLaptop extends Laptop{ @Override public void sale() { System.out.println("销售联想笔记本"); } } class LenovoPad extends Pad{ @Override public void sale() { System.out.println("销售联想平板"); } } //神州系列 class ShenzhouDesktop extends Desktop{ @Override public void sale() { System.out.println("销售神州台式机"); } } class ShenzhouLaptop extends Laptop{ @Override public void sale() { System.out.println("销售神州笔记本"); } } class ShenzhouPad extends Pad{ @Override public void sale() { System.out.println("销售神州平板"); } } //戴尔系列 class DellDesktop extends Desktop{ @Override public void sale() { System.out.println("销售戴尔台式机"); } } class DellLaptop extends Laptop{ @Override public void sale() { System.out.println("销售戴尔笔记本"); } } class DellPad extends Pad{ @Override public void sale() { System.out.println("销售戴尔平板"); } }
桥接模式核心
处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联
代码
品牌类
public interface Brand { void sale(); } class Lenovo implements Brand{ @Override public void sale() { System.out.println("销售联想电脑"); } } class Shenzhou implements Brand{ @Override public void sale() { System.out.println("销售神州电脑"); } } class Dell implements Brand{ @Override public void sale() { System.out.println("销售戴尔电脑"); } }
客户端
public class Client { public static void main(String[] args){ //用组合的方式增加品牌 Computer2 computer2 = new Laptop2(new Lenovo()); computer2.sale(); Computer2 computer21 =new Laptop2(new Dell()); computer21.sale(); //增加台式机 Computer2 computer22 = new Desktop2(new Lenovo()); Computer2 computer23 = new Desktop2(new Dell()); } }
场景
银行日志管理
- 格式分类:操作日志、交易日志、异常日志
- 距离分类:本地记录日志、异地记录日志
人类资源系统的奖金计算模块
- 奖金分类:个人奖金、团体奖金、激励奖金
- 部门分类:人事部门、销售部门、研发部门
OA系统中的消息处理
- 业务类型:普通消息、加急消息、特急消息
- 发送消息方式:系统内消息、手机短信、邮件
相关推荐
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
主要为大家详细介绍了C++设计模式之桥接模式Bridge,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) 体验课程
C#面向对象设计模式 Bridge 桥接模式 视频讲座下载
主要为大家详细介绍了java设计模式之桥接模式Bridge,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
设计模型之桥接模式 bridge C++实现源码,vs2019
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源分。敬请期待。 这是第8节:结构型...
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) (Level 300)
创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...
本文实例讲述了Python设计模式之桥接模式原理与用法。分享给大家供大家参考,具体如下: 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化. 下面是一个桥接模式的demo: #!/usr/bin...
-C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式)
初学桥接模式时的具体实现。若理解有误,还请各位大S纠正。
设计模式 桥接设计模式示例
c++设计模式-结构型模式-桥接模式;qt工程,c++简单源码; 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度...
来写一个大家既陌生又熟悉的设计模式,也是非常实用的一个设计模式,那就是桥接模式。说陌生是很多朋友并不熟悉这个设计模式,说熟悉是很多人经常见到或者是下意识的用到这个设计模式,只是不知道罢了。桥接模式是...
桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使它们都可以独立地变化。更容易理解的表述是:实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合...
主要介绍了深入理解JavaScript系列(44):设计模式之桥接模式详解,桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化,需要的朋友可以参考下
主要介绍了C++设计模式编程中使用Bridge桥接模式的完全攻略,Bridge将抽象部分与它的实现部分分离,使它们都可以独立地变化需要的朋友可以参考下