我们一起来读书吧 关注:154贴子:2,883
  • 0回复贴,共1

《设计模式》第四章(1-4节)有感

只看楼主收藏回复

在第四章中将具体介绍结构型设计模式,以及其优缺点、适用场景。
在结构型模式中又可以分为类结构型模式、对象结构型模式。
类结构型模式关心的是类之间的组合,一般只存在继承和实现关系。
对象结构型模式关心的是类和对象之间的关系,一般是通过关联关系使得一个类中包含另一个类的实例对象,然后在这个类中调用这个对象的相关方法。
BRIDGE桥接模式
当一个抽象方法有多个通过继承的实现子类时,抽象部分和实现就会出现绑定关系,此时就不能单独的修改抽象部分或者实现部分。从类的结构上来说,继承机制就会导致类的功能层次结构和类的实现层次结构混合在一起,不能独立演化。
在桥接模式抽象层次(Abstraction)位于最顶层,只定义对外的抽象部分,实现部分由Abstraction中持有的Implementor实例对象以及RedifineAbstraction实现。Implementor中定义的实现的具体接口,该接口与Abstraction中的接口可以完全不一致,其子类进行具体的实现,从而实现类的实现层次结构。RedifineAbstraction则会继承自Abstraction,从而对其中的抽象方法进行扩展,即对Abstraction持有的Implementor实例对象进行功能扩展,从而实现类的功能层次结构。
优点:(1)可以将类的功能层次结构和实现层次结构分离开,各自独立扩展
缺点:(2)结构复杂

组合模式
当我们使用的对象可以构成整体-部分的关系,并且整体与部分具有相同的行为,且我们希望使用统一的方式处理整体对象和单独对象时,我们可以使用组合模式对实例对象进行管理。
在组合模式中,Component组件定义了所有对象的基础接口,Leaf表示树形结构中的叶子节点,不包含子节点。Composite是树形结构中的非叶子节点,是其他对象的容器,用于包含其他对象,在容器中需要实现对其包含的子组件的处理、添加、删除等操作。
客户端在处理对象时,只需要使用Component接口来进行处理即可,并不需要关系处理的对象一个对象还是一些对象的组合。
优点:可以使用递归的方式处理复杂的树形结构、客户端可以统一的处理组合对象或者单独对象
缺点:暂无

适配器模式
适配器模式即可以作为类结构型模式又可以作为对象结构型模式。
在类结构型模式中,适配器(Adapter)可以将另一个接口或者类(Adaptee)转换为所期望的接口(Target)。这个时候Adapter会采用实现或者继承的方式与被适配的类Adaptee构建关系,然后在Adapter中同时实现Target接口,然后在实现的Target接口中调用Adaptee中的相关方法。
在对象型结构型模式中,适配器(Adapter)可以将另一个对象(Adaptee)转换为所期望的接口(Target)。这个时候Adapter会采用关联关系包含一个Adaptee的实例对象,从而和Adaptee构建关系,然后在Adapter中同时实现Target接口,然后在实现的Target接口中调用Adaptee对象的相关方法。
优点:(1)可以复用现有类,提升类的复用性
缺点:(1)在类接口型设计模式中如果被适配的的一个具体类,单继承语言一次只能适配一个类

DECORATOR装饰模式
装饰器模式可以在不改变对象原有结构的基础上为对象动态扩充功能,所以当一个对象的某个功能需要动态增加、扩展的时候,我们就可以使用装饰器模式进行实现。
通过装饰器模式的结构图可以看出,Component定义了对象的基础功能,Decorator以及ConcreteComponent实现了该接口。其中ConcreteComponent对接口进行实现,从而成为被修饰的对象。Decorator成修饰类的统一接口,会持有被修饰的实例对象,其子类可以根据不同需求实现对被修饰对象增加额外的行为。
优点:不会改变被装饰类的原始结构
缺点:在装饰过程中会产生很多对象


IP属地:北京1楼2024-02-25 21:53回复