本篇随笔主要介绍用Java实现简单的装饰器设计模式: 先来看一下装饰器设计模式的类图: 从图中可以看到,我们可以装饰Component接口的任何实现类,而这些实现类也包括了装饰器本身,装饰器本身也可以再被装饰。 下面是用Java实现的简单的装 ...
本篇随笔主要介绍用Java实现简单的装饰器设计模式:
先来看一下装饰器设计模式的类图:
从图中可以看到,我们可以装饰Component接口的任何实现类,而这些实现类也包括了装饰器本身,装饰器本身也可以再被装饰。
下面是用Java实现的简单的装饰器设计模式,提供的是从基本的加入咖啡入手,可以继续加入牛奶,巧克力,糖的装饰器系统。
1 interface Component { 2 void method(); 3 } 4 class Coffee implements Component { 5 6 @Override 7 public void method() { 8 // TODO Auto-generated method stub 9 System.out.println("倒入咖啡");10 }11 12 }13 class Decorator implements Component {14 public Component comp;15 public Decorator(Component comp) {16 this.comp = comp;17 }18 @Override19 public void method() {20 // TODO Auto-generated method stub21 comp.method();22 }23 24 }25 class ConcreteDecorateA extends Decorator {26 public Component comp;27 public ConcreteDecorateA(Component comp) {28 super(comp);29 this.comp = comp;30 }31 public void method1() {32 System.out.println("倒入牛奶");33 }34 public void method2() {35 System.out.println("加入糖 ");36 }37 public void method() {38 super.method();39 method1();40 method2();41 }42 }43 class ConcreteDecorateB extends Decorator {44 public Component comp;45 public ConcreteDecorateB(Component comp) {46 super(comp);47 this.comp = comp;48 }49 public void method1() {50 System.out.println("加入巧克力");51 }52 public void method() {53 super.method();54 method1();55 }56 }57 public class TestDecoratePattern {58 public static void main(String[] args) {59 Component comp = new Coffee();60 comp.method();61 System.out.println("--------------------------------------------------");62 Component comp1 = new ConcreteDecorateA(comp);63 comp1.method();64 System.out.println("--------------------------------------------------");65 Component comp2 = new ConcreteDecorateB(comp1);66 comp2.method();67 System.out.println("--------------------------------------------------");68 Component comp3 = new ConcreteDecorateB(new ConcreteDecorateA(new Coffee()));69 comp3.method();70 System.out.println("--------------------------------------------------");71 Component comp4 = new ConcreteDecorateA(new ConcreteDecorateB(new Coffee()));72 comp4.method();73 }74 }
原标题:装饰器设计模式初探(Java实现)
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。