Java设计模式概述之结构型模式(装饰器模式)
来源:互联网 发布:超星阅读器mac下载 编辑:程序博客网 时间:2024/05/29 14:59
三、装饰器模式
在Java中,装饰器模式使用场景非常普遍,例如BufferedInputStream就利用了装饰器模式。
装饰器模式与代理模式非常相似,相似点可总结如下:
1、都是对原始类功能、特性的增强。
2、都是通过注入原始类来实现类的增强。
3、其增强原始类的方式都是非侵入的,可插拔的。
4、被扩展后的代码具有良好的扩展性。
当然,不同点如下:
1、注入方式不同。装饰器模式是通过其构造方法接受原始类的实例的引用注入;代理模式是通过内部自动创建原始类的实例。
2、扩展性不同。装饰器模式可以利用多态性来实现增强指定类的功能;代理模式只能针对固定类。装饰器模式的扩展性更强。
装饰设计模式示意图:
代码:
/** * @author Hanlin Wang */public class DecoratorMode { public static void main(String[] args) { A a = new A(); Decorator decorator = new Decorator(a); decorator.run(); }}//定义装饰类class Decorator implements C1{ private C1 c; public Decorator(C1 c){ this.c = c; } public void run(){ System.out.println("before"); c.run(); System.out.println("after"); }}//定义被装饰类装饰的类class A implements C1{ public void run(){ System.out.println("A's running"); }}//定义A类实现的接口interface C1{ void run();}
Decorator为装饰器类,A为原始类,C1为公共接口,接口中有一个run方法。Decorator、A都实现C1接口的run方法。Decorator类中定义了私有的A类的成员变量a,并自定义了构造函数public Decorator(A a)用于注入a成员变量引用的实例对象。
0 0
- Java设计模式概述之结构型模式(装饰器模式)
- java设计模式(结构型)之装饰模式
- java设计模式之结构型模式-装饰模式
- Java设计模式之结构型模式-装饰器模式(Decorator)
- (8)设计模式之装饰模式(结构型模式)
- 设计模式-结构型之装饰模式
- java设计模式——结构型之装饰模式
- java 设计模式-结构模式之装饰模式
- 设计模式--结构模式--装饰模式--Java
- 设计模式 结构型设计模式之装饰模式
- 结构型设计模式-装饰器模式
- 【设计模式】结构型模式之装饰器Decorator
- 结构型:设计模式之装饰模式(十一)
- 设计模式之结构型-装饰模式(7)
- Java设计模式(7)结构型:装饰模式
- javascript设计模式之装饰器模式(结构型模式)
- OOAD-设计模式(四)结构型模式之适配器、装饰器、代理模式
- Java设计模式之装饰器模式
- HTML常用标签(列表标签)二
- 使用git命令将代码托管到github(1)
- php通过ssh2扩展控制linux,模拟阿里云web控制台
- app的运行效果录制下来并保存成gif动画
- hibernate事务代码规范和session与本地线程绑定
- Java设计模式概述之结构型模式(装饰器模式)
- 国内外主流的三维GIS软件
- Weblogic HTTPS SSL证书制作(自己使用openssl来制作CA证书和服务器证书,自己充当CA的角色)
- 抓住那头牛
- 使用getopt_long()从命令行获取参数,struct option
- 【mysql】关于mysql拒绝访问错误:Access denied for user 'root'@'localhost' (using password:YES)
- Redis实战(一) 使用缓存合理性
- xcode如何导出自定义的代码块
- macbook使用“终端”远程登录linux主机