Builder 模式初探
阿新 • • 發佈:2018-12-28
Builder 模式是一步一步建立一個複雜物件的建立型模式,它允許使用者在不知道內部構建細節的情況下,可以更精細的控制物件的構造流程。該模式是為了將構建複雜物件的過程和它的部件解耦,使得構建過程和部件的表示隔離開來,兩者之間的耦合。
使用場景:
1.相同的方法,不同的執行順序,產生不同的事件結果。(View的封裝,對外暴露的方法不同)
2.初始化一個物件特別複雜,如引數特別多且很多都具有預設引數時
示例程式碼:
public class BuilderTest { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int carbohydrate; public static class Builder { // Required parameters private final int servingSize; private final int servings; // Optional parameters - initialized to default values private int calories = 0; private int fat = 0; private int sodium = 0; private int carbohydrate = 0; public Builder(int servingSize, int servings) { this.servingSize = servingSize; this.servings = servings; } public Builder calories(int val) { calories = val; return this; } public Builder fat(int val) { fat = val; return this; } public Builder sodium(int val) { sodium = val; return this; } public Builder carbohydrate(int val) { carbohydrate = val; return this; } public BuilderTest build() { return new BuilderTest(this); } } private BuilderTest(Builder builder) { servingSize = builder.servingSize; servings = builder.servings; calories = builder.calories; fat = builder.fat; sodium = builder.sodium; carbohydrate = builder.carbohydrate; } public static void main(String[] args) { BuilderTest cocaCola = new BuilderTest.Builder(240, 8) .calories(100).sodium(35).carbohydrate(27).build(); } }
IntelliJ IDEA 快速生成 Builder 樣板程式碼
在 IntelliJ IDEA Plugin 庫中有一個名叫 Builder Generator 的外掛,該外掛可以像生成 Getting/Setting 一樣對當前類生成 Builder 樣板程式碼。
本文由個人 hexo 部落格 co2fe.com 遷移
date: 2018-09-18 15:13:06