设计模式使用场景理解

1、适配器模式

适配器模式就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作。通常被用在一个项目需要引用一些开源框架来一起工作时,这些框架的内部都有一些关于环境信息的接口,需要从外部引入,但是外部的接口不一定能匹配,在这种情况下,就需要适配器模式来转换接口。

Java的I/O类库中有许多这样的需求,如将字符串转成字节数据保存到文件中,将字节数据变成数据流。

InputStreamReader实现了Reader接口,并且持有InputStream的引用,其作用是将InputStream适配到Reader。源角色就是InputStream代表的实例对象,目标角色就是Reader类。

2.装饰器模式

装饰器的作用是使得被装饰者功能更强大,而且装饰前后的使用方式不变

InputStream类是以抽象组件的形式存在,而FileInputStream就是具体组件,它实现了抽象接口的所有方法,并且持有InputStream对象的引用。FileInputStream就是一个装饰类,而BufferInputStream是这个装饰类的具体实现者,它给InputStream加入了新的功能,使得InputStream读取的数据保存在内存中,从而提高读取性能。

3.访问者模式

Javac的编译过程涉及许多语法分析,所有就有语法分析器、语义分析器和代码生成器,期间需要多次遍历语法树。然而每次遍历语法树都会进行不同的处理动作

是通过采用访问者模式设计的,每次遍历都是一次访问者的执行过程。

访问者模式可以使数据结构和对数据结构的操作解耦,使得增加对数据结构的操作不需要去修改数据结构,也不必去修改原有的操作,从而执行时再定义新的Visitor实现者就行了。

4.门面模式

Tomcat中门面设计模式使用得很多,因为Tomcat中有很多组件,每个组件要相互交互数据,用门面设计模式隔离数据是个很好的方法。

HttpRequestFacade类封装了HttpRequest接口,能够提供数据,通过HttpRequestFacade访问到的数据被代理到HttpReauest中、通常被封装的对象都被设为Private或者Protectd的,防止在Facade中直接访问

5.观察者模式

Servlet实例的创建、Session的管理、Container管理

 

posted @ 2019-03-26 17:08  facker1  阅读(171)  评论(0编辑  收藏  举报