java设计模式(装饰模式)
2016-04-12 16:12
281 查看
装饰模式实现了可以动态地为原对象扩展方法
装饰对象与被装饰的都实现了同一个接口(或抽象类)
举个例子: 工作 可以边吃东西边工作,也可以边喝东西边工作,还可以工作的时候边吃边喝
创建共同接口 WorkComponent
1 package com.zhanghaobo.patterns; 2 3 public interface WorkComponent { 4 public void work(); 5 }
具体工作(被装饰的对象)
1 public class ConcreteWork implements WorkComponent { 2 3 @Override 4 public void work() { 5 System.out.println("我正在工作"); 6 7 } 8 9 }
装饰类
1 public class DecoratorWork implements WorkComponent { 2 private WorkComponent work; 3 public DecoratorWork(WorkComponent work){ 4 this.work=work; 5 } 6 @Override 7 public void work() { 8 work.work(); 9 } 10 11 }
装饰1(喝茶)
1 public class DrinkDecorator extends DecoratorWork { 2 3 public DrinkDecorator(WorkComponent work) { 4 super(work); 5 } 6 @Override 7 public void work() { 8 super.work(); 9 drinkTea(); 10 } 11 public void drinkTea(){ 12 System.out.println("顺便喝茶"); 13 } 14 15 }
装饰2(吃东西)
public class EatDecorator extends DecoratorWork { public EatDecorator(WorkComponent work) { super(work); } @Override public void work() { super.work(); eatSomething(); } public void eatSomething(){ System.out.println("顺便吃东西"); } }
TEST:
public class Client { public static void main(String[] args) { //边喝茶边工作 WorkComponent wc=new DrinkDecorator(new ConcreteWork()); wc.work(); System.out.println("================================"); //边吃东西边工作 WorkComponent wc1=new EatDecorator(new ConcreteWork()); wc1.work(); System.out.println("================================"); //边吃边喝地工作 WorkComponent wc2=new DrinkDecorator(new EatDecorator(new ConcreteWork())); wc2.work(); System.out.println("================================"); //边喝边吃地工作 WorkComponent wc3=new EatDecorator(new DrinkDecorator(new ConcreteWork())); wc3.work(); } }
输出结果:
我正在工作 顺便喝茶 ================================ 我正在工作 顺便吃东西 ================================ 我正在工作 顺便吃东西 顺便喝茶 ================================ 我正在工作 顺便喝茶 顺便吃东西
转载于:https://www.cnblogs.com/oldcownotGiveup/p/5383123.html
相关文章推荐
- java 设计模式 学习笔记(5) 装饰模式
- Java设计模式之装饰模式
- java设计模式之装饰模式详细介绍
- Java 设计模式 --装饰模式
- 设计模式(九)----- 装饰模式(decorator)----(JAVA版)
- java设计模式(二)—— 装饰、门面、享元、原型、状态、策略
- java--IO流缓冲区,装饰设计模式
- Java 设计模式-----装饰模式
- 浅谈 java 设计模式--装饰模式(Decorator pattern)
- JAVA设计模式(21) —装饰(Decorator)模式
- java中的设计模式一 装饰模式
- Java私塾:研磨设计模式 之 装饰模式(Decorator)3
- 黑马程序员----java设计模式之装饰设计模式和享元设计模式
- java之装饰设计模式和继承的简单区别
- java设计模式:装饰器模式[Decorator]
- java.io.*中的设计模式之 装饰(Decorator)模式
- Java设计模式(三)之装饰设计模式
- Java基础之装饰设计模式理解
- 设计模式--结构模式--装饰模式--Java
- JAVA 装饰类(装饰设计模式)