設計模式-java實戰建造者模式(uml+java)

背景

20+種設計模式,實踐ing。本wiki將闡述建造者模式(builder模式)。
這個模式的特點是:降低同系列對象的創建難度。
重點參考:https://www.bilibili.com/video/BV1Qx411o7tN?p=27

實踐過程

需求分析

拿視頻裏面的例子來說:
客戶端(client)想創建幾個電腦對象,給不同的人使用,那麼就會出現以下代碼:

// 電腦類如下
@Data
public class Computer {
	private String cpu;
	private String hard;
	private String gpu;
}

// 使用

public class Main {
	public static void main(String[] args){
		Computer c1 = new Computer();
		c1.setCpu("i3");
		c1.setHard("500G");
		c1.setGpu("1080");
		Computer c2 = new Computer();
		c1.setCpu("i5");
		c1.setHard("1000G");
		c1.setGpu("1080");
	}
}

是不是覺得每次都要new對象出來,而且還有進行賦值,非常的不爽,這裏違反了一個法則:迪米特法則(即最小知道法則)。
相信每個程序員都只是想簡簡單單的把對象做出來,而不去關心設置對象屬性的細節。

builder模式UML

在這裏插入圖片描述

實現代碼

代碼地址:https://gitee.com/wangtonggui/design_pattern
Computer類,有不同的屬性(實際中的類可能更復雜)。最終是要建造computer。
在這裏插入圖片描述
ComputerBuilder類,定義建造者。其實就是定義每個組件的設置過程(重點:這個過程順序可能是固定的,也就是說需要遵循一個裝配的規範
在這裏插入圖片描述
實現一個建造者
在這裏插入圖片描述
實現指揮者,指揮者實施裝配過程
在這裏插入圖片描述
客戶端client,進行調用
在這裏插入圖片描述
大家會發現,GamePlayerComputer只需要按照之前的規範進行定義即可。

評價

建造者模式在框架中經常會被用到,其實在平常的開發中用的不多。博主之後將研究一下spring中對於建造者的使用,並進行博文闡述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章