设计模式

设计模式

创建型

工厂

通过传参获取不同的实例.一般来说,返回的实例需要实现共同的接口.

抽象工厂

对工厂模式进行抽象封装,工厂类基层抽象工厂进行封装.与工厂模式一样,通过传参返回不同的工厂实现,再通过传参返回不同的实例.

单例

该类负责创建自己的对象,同时确保只有单个对象被创建.该类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象.

注意点:

  1. 单例类只能有一个实例.
  2. 单例类必须自己创建自己的唯一实例.
  3. 单例类必须给所有其他对象提供这一实例.

建造者

使用多个简单的对象一步一步构建成一个负责的对象.提供了一种创建对象的最佳方式.

应用实例:StringBuilder

原型

创建重复的对象,根据一个bean进行克隆.

应用实例:Object.clone()

结构型模式

适配器

作为两个不兼容的接口之间的桥梁.结合了两个独立接口的功能.

应用实例:jdbc

桥接

将抽象部门与实现部分分离,让它们都可以独立变化

应用实例:消息模块,抽象类将发送消息的方法封装好,但是具体如何发送消息的实现(消息内容)由实现类实现,如果采用常规的继承方法,那么发送消息的抽象类会和消息实现类耦合.这时候就需要用到桥接模式了,可以使用桥接模式将具体的实现改为一个接口,将这个接口放到抽象类中,通过构造函数传入不同的接口实现来实现不同的发送消息的实现.

过滤器

使用不同的标准过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来

重大敏感里面在发消息的时候有很多地方都需要去掉当前操作人,这个时候就可以使用过滤器模式解决问题.

Java8里面有特定的过滤器

组合

创建对象组的树形结构

public class Corp{
  private String id;
  private String name;
  private List<Corp> subCorpList;
}

装饰器

向一个现有的对象添加新的功能,同时又不改变其结构.作为现有的类的一个包装.

外观(Facade)

隐藏系统复杂性,并向客户端提供一个可以访问系统的接口.

降低复杂系统的内部子系统的复杂度,简化客户端与之的接口.

享元(Flyweight)

用于减少创建对象的数量,以减少内存占用和提高性能.

使用HashMap存储这些对象

应用实例:String对象,如果有则返回,如果没有则创建一个字符串保存到字符串缓存池中.以及数据库的连接池.

代理(Proxy)

为其他对象提供一种代理以控制对这个对象的访问.

应用实例:spring aop

注意事项: 1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。 2、和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。

行为型模式

责任链(Chain of Responsibility)

为请求创建一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.

应用实例:

  1. tomcat对encoding的处理
  2. jsp servlet中的filter

命令(command)

数据驱动的设计模式.请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理的合适的对象,并将该命令传给响应的对象,该对象执行命令.

应用实例:

解释器

提供了评估语言的语法或表达式的方式.该模式被用于sql解析、符号处理引擎.

**应用实例:**编译器、运算表达式计算

可以考虑放到做一些比较复杂的判断上

迭代器

用于顺序访问集合对象的元素.

**应用实例:**iterator

中介者

用于降低多个对象和类之间的通信复杂性.

**应用实例:**MVC框架中,其中C(控制器)是M(模型)和V(视图)的中介者

备忘录(Memento)

保存一个对象的某个状态,以便在适当的时候恢复对象.

**应用实例:**数据库的事务管理.

观察者(Observer)

当对象间存在一对多关系时,使用观察者模式.

比如说当一个对象被修改时,则会自动通知它的依赖对象.

应用实例:

状态(state)

类的行为是基于它的状态改变的.

**使用场景:**条件、分支语句的代替者

应用实例:

空对象(null object)

一个空对象取代NULL对象实例的检查

策略

一个类的行为或其算法可在运行时更改.

应用实例:

模版

抽象类公开定义了执行它的方法的方式/模版。它的子类可以按需要重写方法实现。

**应用实例:**Spring中对于Hibernate的支持,将开启事物,获取session,关闭session等封装起来.

访问者(visitor)

元素的执行算法可随着访问者改变而改变.

应用实例:

J2EE

MVC

model-view-controller 模型-视图-控制器

主要用于应用程序的分层开发

**应用实例:**SpringMVC

业务代表(Business Delegate)

将一个具体的业务封装到一起.

组合实体(Composite Entity)

一个实体类中包含其他的实体类

数据访问对象(Data Access Object)

把低级的数据访问API或操作从高级的业务服务中分离出来,其实就是DAO

前端控制器(Front Controller)

提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.

拦截过滤器(Intercepting Filter)

对应用程序的请求或响应做一些预处理/后处理.过滤器可以做认证/授权/记录日志

服务定位模式(Service Locator)

JNDI

传输对象模式(Transfer Object)

DTO

从客户端向服务器一次性传递带有多个属性的数据,传输对象也被称为数值对象.

POJO类,可序列化,没有任何的行为.

1) 优秀的程序应该是这样的:阅读时,感觉很优雅;新增功能时,感觉很轻松;运行时,感觉很快速,这就需要设计模式支撑。 2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,但是不知道怎么使用到真实项目。本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,比如 单例模式的8种实现方式、工厂模式的3种实现方式、适配器模式的3种实现、代理模式的3种方式、深拷贝等 3) 如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧 课程内容和目标 本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式 1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种实现)、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式(3种实现)、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式(3种实现)。行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员能掌握主流设计模式,规范编程风格,提高优化程序结构和效率的能力。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页