最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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


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

下面是用Java實(shí)現(xiàn)的簡(jiǎn)單的裝飾器設(shè)計(jì)模式,提供的是從基本的加入咖啡入手,可以繼續(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é)果:

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

相關(guān)文章

最新評(píng)論

合江县| 新建县| 苗栗市| 翁牛特旗| 河北区| 临高县| 出国| 辽阳县| 蛟河市| 藁城市| 嘉峪关市| 澜沧| 普定县| 沈阳市| 五家渠市| 祁连县| 婺源县| 余江县| 沾化县| 鹿泉市| 靖江市| 克拉玛依市| 清远市| 平阳县| 扶绥县| 道真| 同德县| 岳普湖县| 博野县| 瓦房店市| 咸阳市| 满城县| 佳木斯市| 乐清市| 惠来县| 福贡县| 白沙| 房产| 潜山县| 英超| 仲巴县|