設計模式 建造者模式
阿新 • • 發佈:2021-09-17
設計模式 建造者模式
基本概念
建造者模式也是建立形模式的一種(即避免了建立物件時使用new)
簡單例子
我們模擬一個建立房子的過程 假設需要4個步驟才能建立好房子 地基,鋼筋工程,鋪電線,粉刷
定義產品實體類
模擬假設執行了4個步驟就給定義的4個屬性賦值
@Data
public class Product {
String stepA;
String stepB;
String stepC;
String stepD;
}
定義Build抽象類
定義Build抽象類 包含了我們需要的4個步驟以及返回產品的抽象方法
public abstract class Builder { //假設建房要4個步驟 abstract void stepA();//地基 abstract void stepB();//鋼筋工程 abstract void stepC();//鋪電線 abstract void stepD();//粉刷 //完工 得到產品 abstract Product getProduct(); }
定義Worker具體實現類
定義了抽象類就需要去寫實現類 我們寫一個Worker去具體實現內部邏輯
//具體的建築者 工人 public class Worker extends Builder { private Product product; //注意這裡的構造方法 public Worker() { product=new Product(); } void stepA() { product.setStepA("地基"); System.out.println("地基"); } void stepB() { product.setStepB("鋼筋工程"); System.out.println("鋼筋工程"); } void stepC() { product.setStepC("鋪電線"); System.out.println("鋪電線"); } void stepD() { product.setStepD("粉刷"); System.out.println("粉刷"); } Product getProduct() { return product; } }
定義指揮者 指揮工人如何去建立(核心思想)
注意引數是抽象類 Builder
這樣我們就可以根據具體傳進來的工人類去執行對應的方法
public class Director { //指揮工人按照一種順序工作 public Product getProduct(Builder builder){ builder.stepA(); builder.stepB(); builder.stepC(); builder.stepD(); return builder.getProduct(); } }
測試使用
public class Test {
public static void main(String[] args) {
//指揮
Director director=new Director();
//指揮 具體的工人
Product product = director.getProduct(new Worker());
System.out.println(product);
}
}
這樣寫完後 假設我們想調換構造順序就很簡單了
只需要在指揮類換下執行順序即可