设计模式学习笔记(三)

(三)集合模式(Collectional)
1.合成模式(Composite)。设计一个公共的接口,既可以提供给独立组件使用,也可以供复合组件使用。这样客户端程序就可以以一种统一的视角来观察独立组件以及合成组件。换句话说,合成模式允许一个客户端对象以同样的方式对待单独的组件以及一组对象。
2.迭代子模式(Iterator)。一个容器对象的设计应该以一种迭代子对象的形式提供一个公共接口,不同的客户对象通过该接口访问容器中的内容。
3.享元模式(Flyweight[轻量级])。将所有内在的共同数据分离出来,建立一个独立对象。享元的需求:1,对于某个特定的享元类型只存在一个享元对象,并且该对象被所有其他适当的对象共享。2,客户对象不应该被允许直接创建享元实例。
4.访问者模式(Visitor)。用于设计一个集合操作,该操作跨越由包含在同一类层次结构当中的异类对象组成对象集合。访问者模式允许在不改变对象集中任何对象所属类的前提下定义操作。实现方式:将操作定义在一个称为访问者的单独类中,这样做使得集合操作从它所要操作的集合当中分离出来。对于每一个新定义的操作,都创建一个新类,同时,访问者需要有一种方法可以访问到这些对象的公有成员。


(四)结构模式(Structural)
1.装饰器模式(Decorator)。动态的扩展一个对象的功能,装饰器被设计为与底层对象具有相同接口形式,这使得客户对象可以使用与低层实际对象完全一样的交互方式来同装饰器进行交互。装饰器对象包含实际对象的引用,装饰器接受来自客户对象的所有请求(调用)。然后将这些调用转发给低层对象。装饰器在将请求转发之前或之后加入一些额外的功能。这一点保证可以运行时期将额外的功能从外部添加到指定对象之上,而不需要改变它的结构。
2.适配器(Adapter)。在接口不相容的对象周围定义一个封装类,这个封装类的对象就称为适配器。而它所封装的对象称为一个适配源,适配器提供客户所期望的接口,适配器的接口实现将客户对象的调用转换为对适配源类接口的调用。
3.外观模式(Facade[刻面])。为整个子系统提供一种高层次的简单接口,以便减少复杂度和依赖性。把客户对象所需要的子系统的功能简化到简单的接口上,客户不必与子系统中具体完成某个功能的类直接交互,而是简单的调用外观对象所提供的接口。外观对象不要提供超出原来子系统的其他额外功能,不要从外观类的方法中返回内部类的引用。
4.代理模式(Proxy)。代理对象和目标对象有相同的调用接口,它代替客户去和目标对象打交道,并负责处理和目标对象之间交流上的细节。这样客户对象不需要满足目标对象的特别需要就可以轻松的访问它所提供的服务,客户对象调用代理对象的某个方法,代理对象随即把这些调用转发给目标对象。
5.虚代理模式(Virtual Proxy)。以对对象的客户端对象保持透明的方式,延迟一个对象的创建,直到这个对象被真正需要时才创建。
6.审计代理模式(Counting Proxy)。当有需要执行一些附加的操作时,比如在一个对象的方法被调用前后记录日志与计帐,该模式建议将附加的功能封装在一个独立的对象中。
7.桥接模式(Bridge)。允许一个抽象接口与它的实现相分离,这样减少了两者的依赖关系,允许两者可以被独立修改。
8.聚合强制器(Aggregate Enforcer)。将一个聚合对象被实例化时,代表组成对象的成员变量也必须被实例化。即只要一个聚合对象被实例化时,它必须被完全实例化。
9.显示对象释放(Explicit Object Release)。该模式建议当一个对象位于作用域以外时,由它绑定的系统资源也必须及时释放(finally关键字)
10.对象缓存(Object Cache)。这个模式把针对一个对象的方法调用存放在一个库中,当多个客户端对象调用一个方法时,结果被从库中取出返回给客户端对象,而不去访问实际对象,这样做主要是为了获得一个更快的响应时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值