摘要:場(chǎng)景假設(shè)宏基筆記本僅由和內(nèi)存組成,其中生產(chǎn)和內(nèi)存的工序可以獨(dú)立出來(lái)交由各個(gè)廠(chǎng)商制造。具體代碼如下品種普通方法實(shí)現(xiàn)建造者模式實(shí)現(xiàn)內(nèi)部類(lèi)實(shí)現(xiàn)建造者品種客戶(hù)端調(diào)用,語(yǔ)義化躍然紙上。普通方法實(shí)現(xiàn)母一號(hào)土豬黑色建造者模式實(shí)現(xiàn)公黑珍珠白色
描述:一個(gè)復(fù)雜的對(duì)象由多個(gè)部件組成,每個(gè)部件可以獨(dú)立生成,部件的組裝過(guò)程交由指引者完成。
場(chǎng)景:假設(shè)宏基筆記本僅由CPU和內(nèi)存組成,其中生產(chǎn)CPU和內(nèi)存的工序可以獨(dú)立出來(lái)交由各個(gè)OEM廠(chǎng)商制造。
實(shí)現(xiàn):
筆記本:
class AcerComputer { String cpu; String memory; AcerComputer(String cpu, String memory) { this.cpu = cpu; this.memory = memory; } }
定義一個(gè)建造者:
interface Builder { public String createCPU(); public String createMemory(); }
定義一個(gè)OEM,負(fù)責(zé)生成CPU、內(nèi)存:
class OEM implements Builder { @Override public String createCPU() { return "CPU"; } @Override public String createMemory() { return "內(nèi)存"; } }
定義宏基公司,下定單讓OEM制造CPU和內(nèi)存,它自己組裝成電腦:
class AcerCompany { private Builder builder; private String name; AcerCompany(Builder builder) { this.builder = builder; this.name = "宏基公司"; } public AcerComputer create() { String cpu = builder.createCPU(); String memory = builder.createMemory(); return new AcerComputer(cpu, memory); } }
客戶(hù)端調(diào)用:
public static void main(String[] args) { Builder builder = new OEM(); AcerCompany acerCompany = new AcerCompany(builder); // 宏基電腦出廠(chǎng)了 AcerComputer computer = acerCompany.create(); }
==============邪惡的分割線(xiàn)==========================================
利用建造者模式寫(xiě)構(gòu)造方法:
如果一個(gè)對(duì)象的構(gòu)造參數(shù)非常多,可以考慮使用建造者模式構(gòu)造參數(shù),從而使得構(gòu)造的過(guò)程更加語(yǔ)義化。
舉個(gè)“蘿卜”,我們要構(gòu)造一頭豬,它的屬性有雌雄、年齡、品種、膚色等。具體代碼如下:
class Pig { String sex; int age; String varieties; // 品種 String color; // 普通方法實(shí)現(xiàn) Pig(String sex, int age, String varieties, String color) { this.sex = sex; this.age = age; this.varieties = varieties; this.color = color; } // 建造者模式實(shí)現(xiàn) Pig(Builder builder) { this.sex = builder.sex; this.age = builder.age; this.color = builder.color; this.varieties = builder.varieties; } // 內(nèi)部類(lèi)實(shí)現(xiàn)建造者 static class Builder { String sex; int age; String varieties; // 品種 String color; public Builder sex(String sex) { this.sex = sex; return this; } public Builder age(int age) { this.age = age; return this; } public Builder varieties(String varieties) { this.varieties = varieties; return this; } public Builder color(String color) { this.color = color; return this; } public Pig build() { return new Pig(this); } } }
客戶(hù)端調(diào)用,語(yǔ)義化躍然紙上。
public static void main(String[] args) { // 普通方法實(shí)現(xiàn) Pig pig1 = new Pig("母", 10, "一號(hào)土豬", "黑色"); // 建造者模式實(shí)現(xiàn) Pig pig2 = new Pig.Builder().sex("公").age(5).varieties("黑珍珠").color("白色").build(); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64028.html
摘要:注意事項(xiàng)聲明函數(shù)時(shí)候處理業(yè)務(wù)邏輯區(qū)分和單例的區(qū)別,配合單例實(shí)現(xiàn)初始化構(gòu)造函數(shù)大寫(xiě)字母開(kāi)頭推薦注意的成本。簡(jiǎn)單工廠(chǎng)模式使用一個(gè)類(lèi)通常為單體來(lái)生成實(shí)例。 @(書(shū)籍閱讀)[JavaScript, 設(shè)計(jì)模式] 常見(jiàn)設(shè)計(jì)模式 一直對(duì)設(shè)計(jì)模式不太懂,花了一下午加一晚上的時(shí)間,好好的看了看各種設(shè)計(jì)模式,并總結(jié)了一下。 設(shè)計(jì)模式簡(jiǎn)介 設(shè)計(jì)模式概念解讀 設(shè)計(jì)模式的發(fā)展與在JavaScript中的應(yīng)用 ...
摘要:建造者模式建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)建層與其表示層相互分離,同樣的構(gòu)建過(guò)程可采用不同的表示。工廠(chǎng)模式主要是為了創(chuàng)建對(duì)象實(shí)例或者類(lèi)簇抽象工廠(chǎng),關(guān)心的是最終產(chǎn)出創(chuàng)建的是什么,而不關(guān)心創(chuàng)建的過(guò)程。 建造者模式 建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)建層與其表示層相互分離,同樣的構(gòu)建過(guò)程可采用不同的表示。工廠(chǎng)模式主要是為了創(chuàng)建對(duì)象實(shí)例或者類(lèi)簇(抽象工廠(chǎng)),關(guān)心的是最終產(chǎn)出(創(chuàng)建)的是什么,而不關(guān)心創(chuàng)建...
摘要:建造者模式實(shí)現(xiàn)建造者模式實(shí)現(xiàn)創(chuàng)建抽象建造者類(lèi)創(chuàng)建具體建造者類(lèi)。建造者模式使用場(chǎng)景建造者模式使用場(chǎng)景相同的方法,不同的執(zhí)行順序,產(chǎn)生不同的事件結(jié)果時(shí),可以采用建造者模式。1、什么是建造者模式 Separate the construction of a complex object from its representation so that the same constructi...
1、什么是建造者模式Separate the construction of a complex object from its representation so that the same construction process can create different representations.將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離, 使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。 說(shuō)人話(huà):將構(gòu)...
摘要:不過(guò)怎么來(lái)說(shuō)工廠(chǎng)方法模式是簡(jiǎn)單工廠(chǎng)模式的升級(jí)版。其次,工廠(chǎng)模式是一種典型的解耦模式,迪米特法則在工廠(chǎng)模式中表現(xiàn)的尤為明顯。 工廠(chǎng)模式想必大家在開(kāi)發(fā)過(guò)程中會(huì)經(jīng)常用到,顧名思義其就是作為一個(gè)工廠(chǎng)用來(lái)生產(chǎn)產(chǎn)品的,下面來(lái)簡(jiǎn)單介紹幾種常見(jiàn)的工廠(chǎng)模式。 0x01 簡(jiǎn)單工廠(chǎng)模式 1、類(lèi)圖結(jié)構(gòu)showImg(/img/bVFf1t?w=531&h=278); 2、角色分類(lèi) 工廠(chǎng)類(lèi):其內(nèi)部具有一點(diǎn)的判...
閱讀 3579·2023-04-25 20:41
閱讀 2674·2023-04-25 16:40
閱讀 1444·2021-09-23 11:44
閱讀 1262·2021-09-10 10:51
閱讀 1691·2021-09-07 09:59
閱讀 1679·2019-12-27 12:08
閱讀 567·2019-08-30 15:44
閱讀 3344·2019-08-30 11:08