1.Java設計模式-->裝飾者模式

 作爲一個Java小白,面向對象編程的幾個特性:封裝\繼承\多態,我一直真正瞭解的不多.這個模式卻讓我一下理解了多態的好處:它可以很方便的對系統進行解耦.廢話不講,上代碼和註釋
 
1.公共接口

public interface Appearance{
    void draw();
}

2.基本實現類和一個用作裝飾別的Appearance子類的抽象類

//這裏列出來兩個基本實現類
public class Circle implements Appearance{

    @override
    public void draw(){
      System.out.println("畫個圓形");
    }
}

public class Rectangle implements Appearance{

    @override
    public void draw(){
      System.out.println("畫個矩形");
}
//一個裝飾Appearance子類的抽象類
public abstract class AppearanceDecorator implements Appearance{

    //聲明爲proteced可以被子類繼承
    protected Appearance decoratedAppearance;

    public AppearanceDecorator(Appearance decoratedAppearance){
      this.decoratedAppearance = decoratedrAppearance;
    }

    @override
    public void draw(){
      decoratedAppearance.draw();
    }
}

3.裝飾的具體實現類

public class RedAppearanceDecorator extends AppearanceDecorator{

    public RedAppearanceDecorator(Appearance decoratedAppearance){
      super(decoratedAppearance);
    }

    private void setRedBorder(){
      System.out.println("進行鑲邊");
      System.out.println("done!紅色鑲邊");
    }

    @override
    public void draw(){
      decoratedAppearance.draw();
      setRedBorder();
    }
}

接下來:用測試類來測試一下即可:

public class Test{
    public static void(String[] args){
      Appearance circle = new Circle();
      circle.draw();

      Appearance rectangle = new Rectangle();
      rectangle.draw();

      Appearance redCircle = new RedAppearanceDecorator( new Circle() );
      redCircle.draw();
    }
}

最後,簡單一提,學習設計模式一方面是要加深對java體系的理解,另一方面也是增長自己的設計能力.
在Java的io操作中,
BufferedWirter \ OutputStreamWriter 是Writer的子類
其中BufferedWriter就是具體的裝飾類.以後,會結合具體的Java或者Andoid源代碼進行講解.
源代碼我現在閱讀起來還有些費力氣,但是最起碼要有讀源代碼的意識,這是開發者必備的技能.

發佈了56 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章