欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java裝飾器設(shè)計模式初探

 更新時間:2016年09月19日 08:36:24   作者:Michaelwjw  
這篇文章主要為大家詳細(xì)介紹了Java裝飾器設(shè)計模式,感興趣的小伙伴們可以參考一下

本篇隨筆主要介紹用Java實(shí)現(xiàn)簡單的裝飾器設(shè)計模式:

先來看一下裝飾器設(shè)計模式的類圖:


從圖中可以看到,我們可以裝飾Component接口的任何實(shí)現(xiàn)類,而這些實(shí)現(xiàn)類也包括了裝飾器本身,裝飾器本身也可以再被裝飾。

下面是用Java實(shí)現(xiàn)的簡單的裝飾器設(shè)計模式,提供的是從基本的加入咖啡入手,可以繼續(xù)加入牛奶,巧克力,糖的裝飾器系統(tǒng)。

interface Component {
  void method();
}
class Coffee implements Component {

  @Override
  public void method() {
    // TODO Auto-generated method stub
    System.out.println("倒入咖啡");
  }
  
}
class Decorator implements Component {
  public Component comp;
  public Decorator(Component comp) {
    this.comp = comp;
  }
  @Override
  public void method() {
    // TODO Auto-generated method stub
    comp.method();
  }
  
}
class ConcreteDecorateA extends Decorator {
  public Component comp;
  public ConcreteDecorateA(Component comp) {
    super(comp);
    this.comp = comp;
  }
  public void method1() {
    System.out.println("倒入牛奶");
  }
  public void method2() {
    System.out.println("加入糖 ");
  }
  public void method() {
    super.method();
    method1();
    method2();
  }
}
class ConcreteDecorateB extends Decorator {
  public Component comp;
  public ConcreteDecorateB(Component comp) {
    super(comp);
    this.comp = comp;
  }
  public void method1() {
    System.out.println("加入巧克力");
  }
  public void method() {
    super.method();
    method1();
  }
}
public class TestDecoratePattern {
  public static void main(String[] args) {
    Component comp = new Coffee();
    comp.method();
    System.out.println("--------------------------------------------------");
    Component comp1 = new ConcreteDecorateA(comp);
    comp1.method();
    System.out.println("--------------------------------------------------");
    Component comp2 = new ConcreteDecorateB(comp1);
    comp2.method();
    System.out.println("--------------------------------------------------");
    Component comp3 = new ConcreteDecorateB(new ConcreteDecorateA(new Coffee()));
    comp3.method();
    System.out.println("--------------------------------------------------");
    Component comp4 = new ConcreteDecorateA(new ConcreteDecorateB(new Coffee()));
    comp4.method();
  }
}

運(yùn)行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論