Java装饰模式(Decorator)—结构型
2016-07-08 11:54
501 查看
意图
装饰模式以对客户透明的方式扩展对象的功能,是继承关系的一个替代方案。类图与角色
抽象构件(Component):具体构件必须实现的接口。
具体构件(Concrete Component):对Component接口的实现。
装饰者接口(Decorator):持有一个构件(component)对象的实例,并定义一个与抽象构件接口一致的接口。
具体装饰者(Concrete Decorator):对Decorator接口的实现。
实例
//抽象构件 interface Engine{//引擎 public void work(); } //具体构件 class GermanyEngine implements Engine{ public void work(){ System.out.println("引擎正常运转"); } } //装饰者接口 abstract class MonitorEngine implements Engine{//具有监视功能的引擎 private Engine engine; public MonitorEngine(Engine engine){ this.engine=engine; } @Override public void work(){ engine.work(); } } //具体装饰者 class TemperatureMonitorEngine extends MonitorEngine{ public TemperatureMonitorEngine(Engine engine){ super(engine); } @Override public void work(){ System.out.println("获取温度并发送给监控系统"); super.work(); } } class SpeedMonitorEngine extends MonitorEngine{ public SpeedMonitorEngine(Engine engine){ super(engine); } public void work(){ System.out.println("获引擎转速并发送给监控系统"); super.work(); } } class OilMonitorEngine extends MonitorEngine{ public OilMonitorEngine(Engine engine){ super(engine); } public void work(){ System.out.println("获引擎油量并发送给监控系统"); super.work(); } }
//客户端代码 class test { public static void main (String[] args) throws java.lang.Exception{ Engine engine=new GermanyEngine(); engine=new TemperatureMonitorEngine(engine); engine=new SpeedMonitorEngine(engine); engine=new OilMonitorEngine(engine); engine.work(); } }
相关文章推荐
- java classloader理解(似乎不正确)
- andrioid Eclipse 导入其他libray项目作为依赖, 注意的地方
- Java 单例模式
- Java中你必须记住的String方法
- Eclipse打不开,提示: An error has occurred. see the log file解决办法
- java -- java.lang.NoSuchMethodError的问题
- 在Java中使用poi包解析xls文件
- Weblogic10.3.6发布javaWeb项目
- eclipse中最常用的十个快捷键
- java synchronized关键字,类锁,对象锁详解
- Java关键字-volatile
- Java ConcurrentModificationException异常原因和解决方法
- 关于java中创建文件,并且写入内容
- Spring自动装配
- Java 命令规范
- 新浪微博OAuth授权的Java实现
- Spring 定时任务之 @Scheduled cron表达式
- 【Leetcode】1. Two Sum
- spring中的@Configration详解
- java.util.concurrent.ExecutionException: