单例模式:创建单个对象
工厂模式:创建对象交给工厂完成,当需要创建的对象是一系列相互关联或相互依赖的产品族时
原型模式:克隆对象,避免创建初始化开销
建造者模式:创建一个复杂对象,该对象有多个部分组成,Builder 组装这多个对象
代理对象:代替对真实对象访问,保护和隐藏目标对象
适配器模式:系统提供的接口客户端无法使用,这时使用适配器适配该抽象接口
装饰器模式:增强目标对象,不改变原有类结构的情况下,为对象添加新的行为或功能
桥接模式:对象本身有沿着多个维度变化的趋势,比如:视频文件格式有avi、rmvb等等格式,操作系统有Windows、Linux等等系统,桥接模式把这两种东西具有的多个维度结合起来
外观模式:系统功能复杂,外观模式提供一个简单的接口供客户调用,调用功能的过程交给接口完成
组合模式:组合模式正是应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方。比如:文件目录显示,多级目录呈现等树形结构数据的操作。
享元模式:预先创建一些对象存储起来,并提供工厂返回这些对象,避免使用到时重复创建大量相似应用
模板方法模式:多个类的步骤存在相同的一些步骤,把这些步骤提取成抽象类,抽象类再提供抽象方法供子类来具体实现,调用抽象类的方法,实际调用的事子类重写的方法
策略模式:一个问题有多种处理算法,各算法彼此完全独立,且要求对客户隐藏具体算法的实现细节时
命令模式:
责任链模式:一个请求不清楚是被哪个处理者处理时每个都通过一下直到被处理为止,或者需要被多个处理着按顺序处理时,
状态模式:某个对象在不同状态会有不同行为,如电梯的运行状态,ATM机的各种状态、订单状态、角色的不同状态(如跑动,跳跃,攻击等)
观察者模式:对象间存在一对多关系,一个对象的状态发生改变要通知其他对象
中介者模式:多个对象存在一对多联系,加入中介对象来负责转发通信
迭代器模式:为聚合对象实现多种遍历方式,并且只需要提供一个统一的接口(通过实现接口创建多种遍历方式)
访问者模式:一个对象集合有多个元素,需要从多个不同且不相干角度挨个访问这些对象,如:人物对象集合[学生、老师]??,家长角度访问学生的成绩??和老师的能力??,校长角度访问学生人数??和老师任课科目??
备忘录模式:某个对象数据需要备份,在某些时候供恢复使用
解释器模式:用一些符号表示一些执行过程,这些符号比较简单并且可以任意组合,不同组合会有不同执行结果,需要先定义这些符号的执行规则(即解释)