常用设计模式 精简总结

创建型模式

工厂模式:创建工厂接口类(规范),子类(工厂)实现业务。

抽象工厂模式:工厂的创建由子类决定,其子类的子类实现业务。(也称为超级工厂模式)

单例模式:系统中保持一个实例,实例方法私有,公开全局访问方法。

        -[懒汉式]: 获取实例对象时再实例化。加锁的实例化线程安全,但影响性能。

        -[饿汉式]: 类加载时即实例化。线程安全。但可能产生不需要的垃圾对象。

        -[双检锁]: 被实例化的对象加volatile关键字,并且实例化加锁。线程安全。

        -[静态内部类]: 获取实例对象时,调用内部类(类加载机制-静态变量)实现实例化。线程安全,且保证懒加载。

        -[枚举]: 这是实现单例的最好方式。线程安全。支持序列化。

建造者模式:由多个简单对象组合为一个复杂对象的创建对象的方法。适用于内部属性复杂但组合固定的场景。

原型模式:通过拷贝原对象生成新对象,以提高性能或避开构造方法实例化对象。


结构型模式

适配器模式:在成型的项目中,通过新增或改造某些接口类(并实现),以支持更多功能。(关键词:后天扩展)

桥接模式:设计阶段,通过接口层面的联系,使得独立变化的两个系统可以业务组合。

过滤器模式:也称标准模式。结合多个标准过滤一组对象,以获得期望的对象。

组合模式:也称部分整体模式。组合为树形结构来表达个体与整体的关系,并且由于这种组合,使得个体与整体的差异可以被忽略。(关键字:节点  列表)

装饰器模式:在保留原有结构和功能的基础上,构造新对象并增加新的功能。

外观模式:隐藏系统复杂性,对外提供访问接口。

享元模式:尽量利用已有对象,减少新建对象,以提高性能和减少内存占用。如 java string,数据库连接池。

代理模式:不直接访问目标,通过访问其代理来间接访问它。 (访问控制、 额外处理等)


行为型模式

责任链模式:请求将沿着接收者链传递下去,处理或者不处理完全在运行时决定。如 java filter, 击鼓传花。

命令模式:将命令包裹在对象中并传递给调用对象,调用对象会将该命令对象传给实际执行命令的对象,并由其执行命令。

解释器模式:提供解释语法或表达式的方式。(编译器)

迭代器模式:提供一种方法遍历集合而无需了解其底层。(java iterator)

中介者模式:由中介类处理不同类间的通信以降低多个类之间通信的成本。

备忘录模式:保存状态以备可能的恢复操作。(游戏存档)

观察者模式:观察到目标发生变化时,将通知所有依赖于该目标的对象并更新。(listener,watch)

状态模式:对象的行为基于其状态改变而改变。

空对象模式:以空对象取代null。此处的空对象(不一定是 new Object())可以在数据不可用时提供默认属性或行为。

策略模式:准备多种算法(策略)以应对策略关注对象的变化。

模板模式:公开定义执行步骤或算法骨架,具体实现在子类进行。可以使用抽象类实现某些重用方法。

访问者模式:根据访问者不同而作出不同响应。一般有一个接待者。


J2EE模式

MVC模式:即 Model-View-Controller(模型-视图-控制器) 模式,用于程序分层开发,也是目前常用的项目开发模式。

业务代表模式:客户端 - 业务代表 - 查询服务 - 业务服务

组合实体模式:用于持久化模式中,当更新粗粒度对象时,其依赖对象将被自动更新。

数据访问对象模式:DAO模式,实体 - 查询接口 - 查询实现类

前端控制器模式:统一处理所有的前端请求,进行请求授权/过滤等操作,之后将这些请求分发到对应的处理程序。

拦截过滤器模式:对请求做一些预处理/后处理,通过预处理的将被分发到对应的处理程序。

服务定位器模式:JNDI 查找服务后将进行缓存以备后续调用。

传输对象模式:用以客户端与服务端数据传输。如 业务对象 给 传输对象 填充数据,再将其传到 客户端。

你可能感兴趣的:(技术概念,设计模式,java)