设计模式三(桥接模式、过滤器模式、组合模式)

                                                                   设计模式


  • 桥接模式

解决问题:使用继承实现抽象时可能导致类过多,桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。

优点:

1、分离抽象接口及其实现部分。提高了比继承更好的解决方案。

2、桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。

3、实现细节对客户透明,可以对用户隐藏实现细节。

缺点

1、桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

2、桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性

实现:

方案一:为每种形状都提供各种颜色的版本。

方案二:根据实际需要对颜色和形状进行组合。

 

 

  • 过滤器模式

解决问题:使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。

优点:

使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来

缺点:

类设置过于复杂

实现:

我们将创建一个 Person 对象、Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表。CriteriaPatternDemo,我们的演示类使用 Criteria 对象,基于各种标准和它们的结合来过滤 Person 对象的列表。

 

 

  • 组合模式

解决问题:当一个对象包含多个对象组成时(如树状结构),为简便用户的操作,创建包含不同对象共同特征的基类。客户程序可以向处理简单对象一样来处理复合对象,从而使得客户程序与复杂元素的内部结构解耦。

优点:1、高层模块调用简单。 2、节点自由增加。

缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则

实现:

Component是管理共同特征的基类,leaf和composite表示文件和文件夹,既叶子节点和非叶子结点。通过Component可对leaf和composite组成的复杂对象进行简单操作。

发布了46 篇原创文章 · 获赞 43 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/wangxiaai/article/details/87820445
今日推荐