您的位置:首页 > 其它

设计模式初识积累

2016-09-23 09:53 239 查看

策略模式和适配器模式:

策略模式

Context类维持一个对Strategy类(该类是其他“具体策略类”的父类)的引用,并可以根据客户端的选择,更改Strategy类的实例。

Context类中的ContextInterface()方法,调用Strategy类的AlgorithmInterface()方法,即可实现调用“具体策略类”的算法方法。

形象理解:把具体的策略S指定给A,然后调用A的算法执行操作。比如A维持个对一个算法的引用,这个“算法族”执行时需要按照步骤1.2.3执行。但客户端只需要调用A的执行方法,使客户端和具体的算法分离。

适配器模式

如果想使A类具有和B类一样的方法调用接口,但根据开放-封闭规则不去修改A类,那么可以创建和B类有相同方法调用接口的C类,在C类中维持一个对A类实例的引用,同时在这些方法中具体实现对A类方法的调用。

形象理解:在A外面包裹一层C,C和B具有相同的方法调用接口。这样外部使用A时,只需要使用C,用法和B一样。

区别:虽然说策略模式中Context对Strategy进行了包装,和适配器包装了A类,但是两者侧重不同。策略模式是孤立的Context对有相互联系的“算法族”进行包装。适配器模式侧重使用“隶属于组织中”的Adapter对孤立的A类进行包装,使A类好像“加入了组织”。

建造者模式和(简单)工厂模式:

建造者模式是为生产一个十分复杂的产品而设计的。Builder类规定了产品“需要生产哪些零件”,以至于ProductBuilder不会忘记生产这些零件。具体的ProductBuilder生产“具体的零件”。Director类负责“把这些零件组装起来”,以至于不会忘记组装这些零件。

区别:如果Director看作Client,那么Director类中的调用就可以看作是一个(简单)工厂模式的调用。但是建造者模式生产的对象比工厂模式生产的要复杂。

抽象工厂模式

补充

代理模式

补充

观察者模式

其中Java工具类提供了被观察者抽象基类:java.util.Observable。观察者接口:java.util.Observer。

使用:

桥接模式和装饰模式

补充

命令模式

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: