建造者模式

     當一個對象非常複雜,爲了區分構建過程和使用過程,使用一個Director類進行對象的構建,Builder規定了這個構建過程。

模式結構:


     Builder:抽象建造者接口,規範各個組成部分的構建。
     ConcreateBuilder:具體的建造者角色,實現組成部分的構建,並提供示例(getResult()方法)。
     Product:產品角色,創建返回的對象。
     Director:引導者角色。負責組裝(構建)。

使用場景:
     ①、當創建對象複雜並且與其使用過程獨立。
     ②、構造過程允許構造的對象有不同的標識。

創建一隻狗的示例:

Builder:

public abstract class IBuilder {
      abstract void buildHead();
      abstract void buildBody();
      abstract Dog getResult();
}

ConcreateBuilder:

public class DogBuilder extends IBuilder{

      Dog d = new Dog();
      @Override
      void buildHead() {
            // TODO Auto-generated method stub
            d.add("head");
      }

      @Override
      void buildBody() {
            // TODO Auto-generated method stub
            d.add("body");
      }

      @Override
      Dog getResult() {
            return d;
      }

}

Product:

public class Dog {
      StringBuilder entity = new StringBuilder();

      public Dog(){}

      public void add(String part){
            entity.append(part);
      }
}

Director:

public class Director {
      IBuilder builder = null;

      public Director(IBuilder builder){
            this.builder = builder;
      }

      public void construct(){
            builder.buildBody();
            builder.buildHead();
      }
}
     
     就類似要建造一棟房子,由工人(Builder)進行建造,由工頭(Director)指揮建造,最終由建造者工人提交成品。




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