创建型模式
工厂模式:创建工厂接口类(规范),子类(工厂)实现业务。
抽象工厂模式:工厂的创建由子类决定,其子类的子类实现业务。(也称为超级工厂模式)
单例模式:系统中保持一个实例,实例方法私有,公开全局访问方法。
-[懒汉式]: 获取实例对象时再实例化。加锁的实例化线程安全,但影响性能。
-[饿汉式]: 类加载时即实例化。线程安全。但可能产生不需要的垃圾对象。
-[双检锁]: 被实例化的对象加volatile关键字,并且实例化加锁。线程安全。
-[静态内部类]: 获取实例对象时,调用内部类(类加载机制-静态变量)实现实例化。线程安全,且保证懒加载。
-[枚举]: 这是实现单例的最好方式。线程安全。支持序列化。
建造者模式:由多个简单对象组合为一个复杂对象的创建对象的方法。适用于内部属性复杂但组合固定的场景。
原型模式:通过拷贝原对象生成新对象,以提高性能或避开构造方法实例化对象。
结构型模式
适配器模式:在成型的项目中,通过新增或改造某些接口类(并实现),以支持更多功能。(关键词:后天扩展)
桥接模式:设计阶段,通过接口层面的联系,使得独立变化的两个系统可以业务组合。
过滤器模式:也称标准模式。结合多个标准过滤一组对象,以获得期望的对象。
组合模式:也称部分整体模式。组合为树形结构来表达个体与整体的关系,并且由于这种组合,使得个体与整体的差异可以被忽略。(关键字:节点 列表)
装饰器模式:在保留原有结构和功能的基础上,构造新对象并增加新的功能。
外观模式:隐藏系统复杂性,对外提供访问接口。
享元模式:尽量利用已有对象,减少新建对象,以提高性能和减少内存占用。如 java string,数据库连接池。
代理模式:不直接访问目标,通过访问其代理来间接访问它。 (访问控制、 额外处理等)
行为型模式
责任链模式:请求将沿着接收者链传递下去,处理或者不处理完全在运行时决定。如 java filter, 击鼓传花。
命令模式:将命令包裹在对象中并传递给调用对象,调用对象会将该命令对象传给实际执行命令的对象,并由其执行命令。
解释器模式:提供解释语法或表达式的方式。(编译器)
迭代器模式:提供一种方法遍历集合而无需了解其底层。(java iterator)
中介者模式:由中介类处理不同类间的通信以降低多个类之间通信的成本。
备忘录模式:保存状态以备可能的恢复操作。(游戏存档)
观察者模式:观察到目标发生变化时,将通知所有依赖于该目标的对象并更新。(listener,watch)
状态模式:对象的行为基于其状态改变而改变。
空对象模式:以空对象取代null。此处的空对象(不一定是 new Object())可以在数据不可用时提供默认属性或行为。
策略模式:准备多种算法(策略)以应对策略关注对象的变化。
模板模式:公开定义执行步骤或算法骨架,具体实现在子类进行。可以使用抽象类实现某些重用方法。
访问者模式:根据访问者不同而作出不同响应。一般有一个接待者。
J2EE模式
MVC模式:即 Model-View-Controller(模型-视图-控制器) 模式,用于程序分层开发,也是目前常用的项目开发模式。
业务代表模式:客户端 - 业务代表 - 查询服务 - 业务服务
组合实体模式:用于持久化模式中,当更新粗粒度对象时,其依赖对象将被自动更新。
数据访问对象模式:DAO模式,实体 - 查询接口 - 查询实现类
前端控制器模式:统一处理所有的前端请求,进行请求授权/过滤等操作,之后将这些请求分发到对应的处理程序。
拦截过滤器模式:对请求做一些预处理/后处理,通过预处理的将被分发到对应的处理程序。
服务定位器模式:JNDI 查找服务后将进行缓存以备后续调用。
传输对象模式:用以客户端与服务端数据传输。如 业务对象 给 传输对象 填充数据,再将其传到 客户端。