适配器模式详解 适配器模式( 三 )


3、代理模式
代理模式是为其他对象提供一种代理以控制对这个对象的访问 , 也就是创建类的代理类 , 间接访问被代理类的过程中 , 对其功能加以控制 。
它和装饰器模式的区别在于 , 装饰器模式为了增强功能 , 而代理模式是为了加以控制 。代理模式就是多一个代理类出来 , 替原对象进行一些操作 , 例如买火车票不一定在火车站买 , 也可以去代售点 。再比如打官司需要请律师 , 因为律师在法律方面有专长 , 可以替我们进行操作 。
4、外观模式
外观模式是为子系统中的一组接口提供一个一致的界面 , 外观模式定义了一个高层接口 , 这个接口使得这一子系统更加容易使用 。
在客户端和复杂系统之间再加一层 , 提供一个容易使用的外观层 。外观模式是为了解决类与类之家的依赖关系的 , 外观模式就是将他们的关系放在一个Facade类中 , 降低了类类之间的耦合度 , 比如搜狐门户网站 , 就利用了外观模式 。
5、桥接模式
桥接模式是将抽象部分与实现部分分离 , 使它们都可以独立的变化 。桥接模式就是把事物和其具体实现分开 , 使他们可以各自独立的变化(突然联想到了mvc模式) 。
将抽象化与实现化解耦 , 使得二者可以独立变化 , 就好比现在常说的mvc模式 , view和model之间通过control来控制 , 达到高内聚低耦合来解耦的目的 。
6、组合模式
组合模式是将对象组合成树形结构以表示"部分-整体"的层次结构 , 组合模式使得用户对单个对象和组合对象的使用具有一致性 。
创建了一个包含自己对象组的类 , 并提供修改对象组的方法 。在系统的文件和文件夹的问题上就使用了组合模式 , 文件下不可以有对象 , 而文件夹下可以有文件对象或者文件夹对象 。
7、享元模式
享元模式是运用共享技术有效地支持大量细粒度的对象 。享元模式的主要目的是实现对象的共享 , 即共享池 , 当系统中对象多的时候可以减少内存的开销 , 重用现有的同类对象 , 若未找到匹配的对象 , 则创建新对象 , 这样可以减少对象的创建 , 降低系统内存 , 提高效率 。
三、行为型模式:
1、策略模式
策略模式是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换 , 且算法的变化不会影响到使用算法的客户 。
为了统一接口下的一系列算法类(也就是多种策略) , 用一个类将其封装起来 , 使这些策略可动态切换 。策略模式属于行为型模式 , 是为了使这些策略可以相互切换 , 是为了选择不同的行为 。
2、模版方法模式
模板方法模式是定义一个操作中的算法的骨架 , 而将一些步骤延迟到子类中 。该模式就是在一个抽象类中 , 有一个主方法 , 再定义1...n个方法 , 可以是抽象的 , 也可以是实际的方法 , 定义一个类 , 继承该抽象类 , 重写抽象方法 , 通过调用抽象类 , 实现对子类的调用 。
模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 , 将一些固定步骤、固定逻辑的方法封装成模板方法 。调用模板方法即可完成那些特定的步骤 。
3、观察者模式
观察者模式是定义对象间的一种一对多的依赖关系 , 当一个对象的状态发生改变时 , 所有依赖于它的对象都得到通知并被自动更新 。
也就是当被观察者状态变化时 , 通知所有观察者 , 这种依赖方式具有双向性 , 在QQ邮箱中的邮件订阅和RSS订阅 , 当用户浏览一些博客时 , 经常会看到RSS图标 , 简单来说就是当订阅了该文章 , 如果后续有更新 , 会及时通知用户 。这种现象即是典型的观察者模式 。
4、迭代器模式
迭代器模式是提供一种方法顺序访问一个聚合对象中各个元素,而又无须暴露该对象的内部表示 。
在Java当中 , 将聚合类中遍历各个元素的行为分离出来 , 封装成迭代器 , 让迭代器来处理遍历的任务;使简化聚合类 , 同时又不暴露聚合类的内部 , 在我们经常使用的JDK中各个类也都是这些基本的东西 。

秒懂生活扩展阅读