四人帮设计模式之精简理解
设计模式绝对不是灵丹妙药,但是合适的地点合适的时间使用设计模式绝对能事半功倍。
就像武林中的招式,开始习武只能见招学招,但是一旦融汇贯通,便能无招胜有招,杀伤力与优雅并存。
我还在见招学招的阶段,所以暂且总结一下日常编码中用过的或者有点理解的模式,以作备忘。
1.简单工厂
一个工厂生成多种类,根据输入判别需要生成的类。最简单最直观的工厂。
2.策略模式
要调用的方法定义成接口,策略实现接口即可,不同的策略用不同的类来实现。
3.装饰模式
将既有的类封装在另一个类中,从被封装的类返回的数据惊醒加工处理再返回,所谓打扮一下数据。
4.代理模式
实际工作的类被代理类隔离起来,利用操作代理类来实现对实际的类的操作。
5.工厂方法模式
对比简单工厂,简单工厂是把判断放在自己的函数中,工厂产品的关系是一对多。
工厂方法需要抽象出一个接口,然后对应不同的产品分别做一个工厂,每个工厂之对应一种产品,所以是一对一。
6.原型模式
7.模板方法模式
8.外观模式
9.建造者模式
10.观察者模式
就是常见的event-handler模式,或者callback模式。
11.抽象工厂模式
对比工厂模式,工厂模式是一个工厂对应一个产品,工厂实现了创建这一个产品的接口。
抽象工厂是一个工厂对应同一系列的产品,工厂实现创建同一系列的产品的接口,然后有多个工厂对应不同的系列。
可以利用配置文件,反射技术来扩展抽象工厂,使得切换抽象工厂,而不用改动代码。
12.状态模式
13.适配器模式
有点像中介模式。
14.备忘录模式
15.组合模式
16.迭代器模式
C#中实现IEnumerable接口返回迭代器都是此模式。通常迭代器包含一个数组,一个游标,一个next函数,一个reset函数。
17.单例模式
又叫单件模式,是指在一个appdomain中只存在唯一实例,通常作为全局服务,全局工具使用。
18.桥接模式
19.命令模式
20.职责链模式
各干各的,互不干扰。
21.中介者模式
22.享元模式
23.解释器模式
24.访问者模式
未完待续。