http://blog.csdn.net/zhangerqing/article/details/8194653/
http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html
看了上面2篇文章, 对设计模式有了一个初步简单的了解,把自己很肤浅的理解写在下面,当作索引以后学习回顾
创建型 | Factory (工厂模式) |
Singleton (单例模式) | |
结构型 | Adapter (适配器模式) |
Decorator (装饰器模式) | |
Proxy (代理模式) | |
Fa?ade (外观模式) | |
Bridge (桥接模式) | |
Composite (组合模式) | |
Flyweight (享元模式) | |
行为型 | Strategy (策略模式) |
Template (模板方法) | |
Observice (观察者模式) | |
Iterator (迭代子模式) | |
Chain of Responsibily (责任链模式) | |
Command (命令模式) | |
Memento (备忘录模式) | |
State (状态模式) | |
Visitor (访问者模式) | |
Mediator (中介者) | |
Interprefer (触发器) |
Adapter (适配器模式) 对类: public class Adapter extends Source implements Targetable
对象:和对类的模式相同, 但不继承Source类, 在对象中调用另一个对象 (Source作为构造器参数传入Adapter)
对接口:abstract实现interface中所有抽象方法, 实现类只需要继承abstract即可, 可以自由的选择需要的部分方法, 不需要重写所有方法
Decorator (装饰器模式) : 对原方法进行扩展, 扩展前后需要实现同一个接口, 保持方法名的相同. 原类存在扩展类的构造参数中
Proxy (代理模式) : 对原类进行扩展, 原类存在扩展类的构造参数中, 使用权交给Proxy类. 对原类可以进行更加复杂的组装, 相比Decorator更加灵活
Fa?ade (外观模式) : 配置类之间的关系, 有点像主板, 对各个相互依赖的类进行组装以实现一个特定的功能
Bridge (桥接模式) : 动态的选择使用类, MyBridge中实现了具体功能, 但其所需的驱动类需要根据具体使用者选择不同的类, 为此定义了一个interface, 在Mybridge中调用这个接口进行模拟。 由Bridge实现动态的注入interface的具体实现类, public class MyBridge extends abstract Bridge。(工厂模式的创建需要显式的知道接口的具体名称, 但桥接模式并不需要, 通过set方法实现)
Composite (组合模式) : 递归调用, 树结构的实现
Flyweight (享元模式) :
Strategy (策略模式) : public abstract class AbstractCalculator; public class Plus extends AbstractCalculator implements ICalculator; 借助辅助类实现接口
Template (模板方法) : public class Plus extends AbstractCalculator ; AbstractCalculator 集成共同算法(实现, 功能), 让其子类重写具体的算法实现。给一个模板, 子类继承后重写个性化的内容
Observice (观察者模式) : 在被观察者类中存储观察者属性, + 策略模式, 借助策略模式中的辅助类, 在辅助类中添加观察者属性, 在需要的时候notifyAll
Iterator (迭代子模式) : 集合容器的接口中定义对Iterator接口的调用, 具体的集合容器实现类需要把自身的引用传给实现Iterator的类, 这个类需要和对应的集合容器匹配
Chain of Responsibily (责任链模式) : 同一个时刻, 命令只允许一个对象传递给另一个对象, 和组合模式不同
Command (命令模式) : 一层一层 (任务的细化分工), 每一层只需将自己的任务分配或同时完成少量工作, 具体的任务实现交由下一层管理, 下一层再重复这套动作, 直到命令完成
Memento (备忘录模式) : 原始类中需要有创建备忘录的方法, 创建一个备忘录对象交由另一个对象存储管理
State (状态模式) : 状态的改变, 对应调用的方法也要改变
Visitor (访问者模式) : 被访问者拥有访问者的使用权限, 在被访问者中定义一个方法传递自身引用给访问者, 访问者想要访问被访问者(获得被访问者的对象引用), 只能通过被访问者调用, 访问者的权限由被访问者管理
Mediator (中介者) : 第三方类组合其它类
Interprefer (触发器) : (对数据的存储)