对象
1 简单工厂
使用一个工厂类来创建接口或者抽象类或者普通类,工厂内部的处理不暴露给客户端,提供了封装,解耦。
2 外观模式
客户端和多个模块进行交互的时候,使用一个工具类进行和多模块的交互,这个工具类是高级的外观表现,也叫外观类,和多模块交互有顺序或者功能变化只需要变动外观类的实现类即可
特点:简单易用 解耦 层次分明
本质:封装交互 简化调用
3 适配器模式
当客户端调用一个接口不兼容时,提供一个中间类进行被调用接口的转换,这个中间类充当适配器
特点:转化匹配 复用功能
4 单例模式
保证一个类只有一个实例 并提供了一个全局访问该实例的点(方法)
本质:控制实例数目
5 工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化在子类中进行处理
工厂方法模式的解决思路很有意思,那就是不解决,采取无为而治的方式:
他定义一个方法来创建,事实上他不知道如何创建,定义成抽象方法就可以了
本质:延迟到子类选择实现
6 抽象工厂模式
抽象工厂的功能是为一系列相关对象或相关依赖的对象创建的一个接口。
7 生成器模式
就是build
8 原型模式
功能包含两个方面:
1 一个是通过克隆来创建新的对象实例
2 另一个是为克隆出来的新对象实例复制原型实例属性的值
本质:克隆生成对象
交互
9 中介者模式
用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立改变他们之间的交互。
本质:封装交互
10 代理模式
代理类实现了与目标对象一样的接口,这样就可以使用代理来代理具体的目标对象,并保持与i个指向目标对象的引用,可以在需要的时候调用具体的目标对象。
11 观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于他的对象都得到通知并被自动更新。
本质:触发联动
12 命令模式
将一个请求封装成为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
13迭代器模式
提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示
核心:封装
对象的结构
14组合模式
将对象组合成树形结构以表示 部分-整体 的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性
15模板方法模式
定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构重定义该算法某些特定步骤。
16策略模式
针对if else if ,对于不同的情况,传入不同策略对象进行处理,当然不同情况的判定还是需要if else if 但是if{}的代码体简略了,且不用改动了
策略模式的重心不再于如何定义实现算法,而是如何组织,调用这些算法,从而让程序更灵活,更有维护性和扩展性
17状态模式
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
本质:根据状态来分离和选择行为。
18备忘录模式
保存和恢复内部状态
19解释器模式
20装饰器模式
aop 动态给一个对象增加额外的操作
21责任链模式
filer过滤器
22桥接模式
将抽象部分和它的实现部分分离,使他们可以独立地变化