设计模式无非就是用一个中间件承载变化。
如下就是从这个角度,对全部的设计模式进行分析。
创建型:
1. 单件模式(Singleton Pattern)
这个模式没有什么可说,应该说算不上什么模式,无非就是一种需求而已。
2. 抽象工厂(Abstract Factory)
这个模式的中间件就时抽象工厂,在产品和客户端之间加了一个中间件,有抽象工厂承载变化,消除产品和客户端之间的耦合。
3. 建造者模式(Builder)
这里的中间件是两个,一个导演,一个创建者。
创建者的价值是,控制产品的创建步骤。
4. 工厂方法模式(Factory Method)
这里从中间件是工厂,价值和抽象工厂一样,差别只在于创建的产品就一个。
5. 原型模式(Prototype)
没有中间件,只不过就是用拷贝的方式取代了new。
结构型:
6. 适配器模式(Adapter Pattern)
适配器就是中间件。价值很明显,就是承载接口的不同。
7. 桥接模式(Bridge Pattern)
桥接模式的中间件可以当做是桥接的那个指针或引用,有这个指针承载桥接对象的变化。
8. 装饰模式(Decorator Pattern)
装饰模式的特点就是可以自桥接,这个桥接的指针就相当于中间件,这个中间件的不断桥接,是对象拥有了被层层装饰的感觉。
即,这个桥接使一个或多个接口的功能不断的丰富。
9. 组合模式(Composite Pattern)
组合模式也是在自桥接的基础上,完成了复杂空间的组合。
这个模式的巧妙之处在于,简单对象也实现了复杂对象的接口,而执行的时候可以空执行。
当用户端使用这个对象时,不用区分他是复杂对象,还是简单对象,那过去你就用了。
我对自己的接口做了统一处理。
10. 外观模式(Facade Pattern)
外观模式,这个中间件的思想是很明显的,外观就相当于中间件。相当于在本模块和外部模块之间的中间件。
11. 享元模式(Flyweight Pattern)
这个模式没啥可说的,就是成组的单实例。相当于简单工厂和抽象工厂的关系。
12. 代理模式(Proxy Pattern)
代理模式不用说,就是典行的中间件思想。不多说了,代理吗,就是把内部保护起来,自己和外部沟通。
有时候该模式还能起到适配器的作用。
简单总结一下
发现结构型的模式有3个典型的中间件:适配器,外观,代理。这些模式说白了,就是些设计习惯而已。没有什么设计技巧可言。
其他的几种模式吗,桥接使基础,其他的都各有个的巧妙之处。
装饰和组合都有自桥接的模式基础。组合的桥接还和迭代结合起来。
享元模式的价值在于效率,应就是但实例的组合应用,没有什么特别的巧妙之处。
说以结构型模式个人觉得,装饰和组合是最值得深入研究的模式。
而桥接使基础。
行为型:
13. 模板方法(Template Method)
模板方法,好像没有中间件,但实际上,多态的一系列方法是被谁承载的呢,其实这两的this指针可以作为中间件。
那么作为谁的中间件呢?模板有一个基类的方法吧,有n个多态的方法吧。
这个this指针承载的就是基类方法和n个子类方法的中间件。
14. 命令模式(Command Pattern)
这里的中间件就是命令,为什么这么说呢,命令模式的价值是什么呢?
把调用者,和被调用者的关系解耦。
被调用者把自己的函数封装到类里。
把调用者,和被调用者的之间耦合关系转嫁给了命令对象。
15. 迭代器模式(Iterator Pattern)
这个模式还算个模式吗,是一个基础结构。
已经是类库了。不说了。
按照个人的已经,该不应该被列入模式学习的范围
16. 观察者模式(Observer Pattern)
该模式没有什么中间件,从桥接的模式角度讲。
被观察者,和观察者模式是依赖关系,达不到桥接的那个程度。
该模式的价值是状态的变化自动的传递。
被观察者的状态有变化,观察者马上就能得到通知。
17. 解释器模式(Interpreter Pattern)
先不说
18. 中介者模式(Mediator Pattern)
典型的中间件模式,不做说明了。
19. 职责链模式(Chain of Responsibility Pattern)
先说说该模式的价值,就是职责者,有两个能力,判定能否处理,如果能处理,且结束职责调用,如果不能将任务向下传递。
中间间的价值是什么呢,固定稳定的借口,用多态承载变化。
这样问题就清楚了,这里的中间见就是,桥接者,这里的桥接这是谁?
职责链怎么建立起来的呢?通过桥接吗?那么这里的这个桥接者就是中间件了。
20. 备忘录模式(Memento Pattern)
这个不说。
21. 策略模式(Strategy Pattern)
和桥接一样,桥相当于中间件了。每个策略会以桥的方式共策略调用者使用,这里策略的变化就依赖于这个桥,所以这个桥就是中间件
22. 访问者模式(Visitor Pattern)
这里的中间件有两个,本访问者和访问者都是,因为这是一个双向变化的组合,如果被访问这是固定的,那么会因为不同的访问者产生变化。所以这里访问者的桥是中间件。如果访问者是固定的,那么会有被访问者的不 同产生变化,所以这里这个被访问这的桥是中间件。当然这里解释一下,一般桥接都是以组合聚合的关系建立起来的,这里一般用依赖,但依赖本质上也承担了桥接的价值。我这里用桥这个词,希望大家更容易理解。
23. 状态模式(State Pattern)
这里的中间件就是状态桥了。
设计模式,无非就是中间件思想
最新推荐文章于 2023-10-01 23:35:42 发布