设计模式之装饰者模式

装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。


(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以和真实对象相同的方式和装饰对象交互。
(2) 装饰对象包含一个真实对象的引用(reference)
(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。


装饰者模式应用场景实例:

1. JDK文件流类:ileIutputStream ("data.txt")这个就是默认的目标实现类。FileIutPutStream 是最基本的吧,读取文件的一个类。然后对它进行了两成包装,第一层 BufferedIutputStream ,这个包装后输入类就有缓存的功能;第二层DataIutputStream。这就是JDK中应用到装饰者模式的实际场景。

2. Tomcat里的servlet类:HttpServletRequset和HttpServletResponse是Servlet标准所指定的Java语言与Web容器进行交互的接口。接口本身只规定java语言对web容器进行访问的行为方式,而具体的实现是由不同的web容器在其内部实现的。那么在运行期,当我们需要对HttpServletRequset和HttpServletResponse的默认实例进行扩展时,我们就可以继承HttpServletRequestWrapper和HttpServletResponseWrapper来实现。

3. Hadoop里的Intwritable,Text类实际上是对java的int 类型和string类型进行修饰和补充,同时实现序列化,方便数据的存储。

你可能感兴趣的:(设计模式之装饰者模式)