面向复用的设计模式
摘要:
适配器模式
装饰器模式
外观模式
策略模式
模板模式
迭代器模式
模式分类:
创建型:和对象的创建相关
结构型:当用户需求变化,都对象结构的冲击
行为型:针对软件不同类之间进行的交互
适配器模式:
用一个老的,已有的东西,去满足新的需求和功能
Adaptee是已有的接口,实现了功能SpecificRequest,但新的需求是ITarget的Request,我们先设计一个适配器Adapter implements ITarget,然后在这个类中,可以用委托,也可以用继承,去调用Adaptee的SpecificRequest实现Request。

装饰器模式:
对同一个对象,赋予不同属性和方法,符合单一责任原则,每个类做一个事情
Facade外观模式:
当用户需要调用多个类,这些类或这些功能的名字容易发生混淆,但这些功能很相似,参数都一样,我们就可以将这些类和方法封装起来,构建一个Facade类,里面构造一个接口提供给用户,用户用这个接口调用相应的方法。
但是很明显,这个模式违背了开放封闭原则,当有新的数据库类型的时候,就需要改变这个Facade的内部代码。其实,类似这种switch的分支就很危险。
以上都属于结构模式,下面介绍行为模式
策略模式:
实验中有所涉及,当同一个功能需要实现多种算法的时候,为了能在不同算法之间灵活切换,就需要用到策略模式,封装一个策略接口,包含要替换的方法,在不同的实现中重写这个策略,重写方法,当调用时只需实例化不同策略即可
Template模板模式:
实现一个功能,需要分不同的步骤,且顺序是确定的,就可以定义一个抽象类作为模板,一个方法实现功能,实现时调用不同步骤的方法step1,step2,step3……,这些步骤是抽象方法,在子类继承这个抽象类时,实现这些步骤就能实现功能。



迭代器模式:
这个模式和java的数据结构有关,和for each遍历有关
要想对一个集合进行遍历,这个容器就要是可迭代的,也就是Iterable,于是这个类要继承自Iterable,Iterable是一个接口,必须实现其get Iterator的方法,也就是获取一个迭代器,我们可以自定义一个迭代器继承自Iterator作为其内部类: