內的 物件 獲取 鍵值對_陣列遍歷和物件遍歷
阿新 • • 發佈:2021-01-22
建造者模式的定義
建造者模式(Builder Pattern)將一個複雜物件的構建過程與它的表示分離,使得同樣的構建過程可以建立不同的表示,屬於建立型設計模式。
對於使用者而言,使用建造者模式只需指定需要建立的型別就可以獲得物件,建立過程及細節不需要了解
- 構建與表示分離:構建代表物件建立,表示代表物件行為、方法,也就是將物件的建立與行為進行分離(對應到Java程式碼,其實就是使用介面規定行為,然後由具體的實現類進行構建)。
- 建立不同的表示:也就是具備同樣的行為,但是卻由於構建的行為順序不同或其他原因可以創建出不同的表示。
應用場景
- 相同的方法,不同的執行順序,產生不同的結果。
- 多個部件或零件,都可以裝配到一個物件中,但是產生的結果又不相同
- 產品類非常複雜,或者產品類中不同的呼叫順序產生不同的作用。
- 初始化一個物件特別複雜,引數多,而且很多引數都具有預設值。
建造者模式主要包含4個角色
- 產品(Product):要建立的產品類物件。
- 抽象建造者(IBuilder):建造者的抽象類,規範產品物件的各個組成部分的建立,一般由子類實現具體的建立過程。
- 建造者(Concrete Builder):具體的Builder類,根據不同的業務邏輯,具體化物件的各個組成部分的建立。
- 呼叫者(Director):呼叫具體的建造者,來建立物件的各個部分,在指導者中不涉及具體產品的資訊,只負責保證物件各部分完整建立或者按某種順序建立。在類圖中,Client相當於呼叫者的角色。
示例
- 產品類 Product
package com.liguogang.BuilderPattern;
/**
* @Description: 產品類
* @Author: LiGuoGang
* @date: 2021/1/21 21:06
*/
public class Product {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Product{" +
"name='" + name + '\'' +
'}';
}
}
- 抽象建造者 IBuilder
package com.liguogang.BuilderPattern;
/**
* @Description: 抽象建造者
* @Author: LiGuoGang
* @date: 2021/1/21 21:07
*/
public interface IBuilder {
Product build();
}
- 具體建造者 ConcreteBuilder
package com.liguogang.BuilderPattern;
/**
* @Description: 具體建造者
* @Author: LiGuoGang
* @date: 2021/1/21 21:09
*/
public class ConcreteBuilder implements IBuilder {
private Product product = new Product();
@Override
public Product build() {
return product;
}
}
- 呼叫者 Client
package com.liguogang.BuilderPattern;
/**
* @Description: 呼叫者
* @Author: LiGuoGang
* @date: 2021/1/21 21:11
*/
public class Client {
public static void main(String[] args) {
ConcreteBuilder builder = new ConcreteBuilder();
System.out.println(builder.build());
}
}
效果:
原始碼地址:https://github.com/lee58/designPattern