结构型模式
1、Decorator装饰器模式
总结:
在不修改原方法的情况下,对其扩展功能。动态的赋予其功能。
2、Bridge桥接模式
总结:
将实现与抽象分离。使其实现能够在不同维度进行灵活变化。如同一个功能在不同的平台实现不同。则可以采用桥接模式。一般用于项目的设计阶段。
3、Adapter适配器模式
总结:
复用以前的类。来实现一些新的功能。如有一个新的接口需要实现。但其功能可以由以前的一些类经过一些处理实现时。则可以采用适配器模式。在不改变原有类的基础上实现新的接口。一般用在项目的后期。
相比于桥接模式。适配器模式更加具体(用某个具体的对象来实现新的接口)。而桥接模式只是对抽象的不同实现。
4、Composite组合模式
总结:
简单对象和复杂对象实现同一套接口。使得客户的调用变得简单。
ps:透明式组合模式在面对需求变化时(如叶子变成了枝干),处理起来比较灵活。
5、Proxy代理模式
总结:
动态代理:C#之动态代理的实现
应用场景:aop
创建型模式
1、Builder建造者模式
总结:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
2、Flyweight享元模式
总结:
复用对象。将内部状态和外部状态分离。
如缓存、字符串驻留池、线程池
3、Factory工厂模式
工厂方法模式
抽象工厂模式
总结:
延迟实例的创建到子类中。
4、Prototype原型模式
总结:
快速复制一个对象。而不是使用New。
浅拷贝或者深拷贝
5、Singleton单例模式
扩展:
静态变量何时初始化
行为模式
1、Observer观察者模式
总结:
类似C#中的事件、发布订阅
一对多
2、Command命令模式
总结:
命令模式是对命令的封装(把方法封装成对象)。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。
就像键盘上的每一个按键就是一个命令。按下按键就发出请求。然后电脑让对应命令去执行。
3、Mediator中介者模式
总结:
多对多。管理一组对象之间的交互,使对象之间解耦
如SignalR
4、State状态模式
总结:
当对象有多个状态且不同的状态涉及到不同的行为时。则可以采用状态模式。
将每个状态对对象行为的影响放到具体的状态对象中去处理。避免了多个if else的判断。
如qq会员不同的等级有不同的功能。
5、Template Method模板方法模式
总结:
当某些行为的执行流程都一致只是某些细节的实现不一样时。则可以采用模板方法模式。
抽象类实现该行为的执行过程。让子类去实现不同的细节。
6、Facade外观模式
总结:
组织小方法已完成某个行为
7、Strategy策略模式
总结:
策略模式主要用于随时对某个方法的实现进行替换。
类似桥接模式。只不过调用方是确定的一个对象。桥接模式则是一个抽象类。
8、Iterator迭代器模式
总结:
迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又无需暴露该对象的内部实现,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。