設計模式:建造者模式

定義

建造者模式(Builder Pattern):將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

類圖

建造者模式
建造者模式包含如下角色:

  • Builder:抽象建造者
  • ConcreteBuilder:具體建造者
  • Director:指揮者
  • Product:產品角色

擴展

建造者模式的簡化:

  • 省略抽象建造者角色:如果系統中只需要一個具體建造者的話,可以省略掉抽象建造者。
  • 省略指揮者角色:在具體建造者只有一個的情況下,如果抽象建造者角色已經被省略掉,那麼還可以省略指揮者角色,讓Builder角色扮演指揮者與建造者雙重角色。

代碼

簡化模式:

public class Room {
    private String window;
    private String floor;

    private Room() {
    }

    public String getWindow() {
        return window;
    }

    public String getFloor() {
        return floor;
    }

    @Override
    public String toString() {
        return "---->floor  " + floor + "   window   " + window;
    }

    public static class Builder {
        private final RoomParams params;

        public Builder() {
            params = new RoomParams();
        }

        public Builder makeWindow(String window) {
            params.window = window;
            return this;
        }

        public Builder makeFloor(String floor) {
            params.floor = floor;
            return this;
        }

        /**
         * 構建
         */
        public Room builder() {
            Room room = new Room();
            params.apply(room);
            return room;
        }

        private class RoomParams {
            private String window;
            private String floor;

            /**
             * 按特定順序組裝
             */
            private void apply(Room room) {
                room.window = window;
                room.floor = floor;
            }
        }
    }
}

調用過程:

Room room = new Room.Builder()
        .makeWindow("藍色玻璃")
        .makeFloor("白色地板")
        .builder();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章