日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

java设计模式建造_java设计模式-建造者模式

發(fā)布時(shí)間:2024/4/14 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java设计模式建造_java设计模式-建造者模式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

建造者模式:將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)造不同的表示。

建造者模式將一個(gè)產(chǎn)品的內(nèi)部表象和產(chǎn)品的生成過(guò)程分割開(kāi)來(lái),建造對(duì)象的時(shí)候只需要指定需要建造的類型,而不必了解具體的建造過(guò)程。

一個(gè)玩具工廠,工人們建造新的玩具人時(shí),需要逐個(gè)安裝各個(gè)部分,種類有胖虎和小夫。萬(wàn)一粗心大意忘記裝了某個(gè)部分,就出現(xiàn)了不合格的玩具,缺胳膊少腿。

為了減少次品率,老板引入了一臺(tái)機(jī)器,設(shè)定好程序后,工人只要選擇制造的玩具種類,按下開(kāi)關(guān)之后機(jī)器自動(dòng)就去裝配對(duì)應(yīng)的玩具。

代碼結(jié)構(gòu)圖如下:

用代碼來(lái)表示就是====>>

首先是一個(gè)建造人物的接口(機(jī)器類,作為一個(gè)制造者,對(duì)玩具而言是個(gè)上帝般的角色,展示了裝配一個(gè)玩具的各個(gè)過(guò)程):

package com.hy.bulider;

public class God {

private IPerson person;

public God(IPerson person) {

this.person = person;

}

public void createPerson() {

person.buildHead();

person.buildBody();

person.buildArms();

person.buildHands();

person.buildLegs();

person.buildFoots();

System.out.println("合成了一個(gè)"+person);

}

}

然后是玩具的接口類和兩個(gè)具體的玩具實(shí)現(xiàn)類(機(jī)器程序設(shè)定的程序,規(guī)定了作為一個(gè)玩具必須要有的零件):

package com.hy.bulider;

public interface IPerson {

public void buildHead();

public void buildBody();

public void buildArms();

public void buildHands();

public void buildLegs();

public void buildFoots();

public String toString();

}

package com.hy.bulider;

public class Fatter implements IPerson{

public void buildHead() {

System.out.println("組成胖頭部");

}

public void buildBody() {

System.out.println("組成胖身體");

}

public void buildArms() {

System.out.println("組成胖胳膊");

}

public void buildHands() {

System.out.println("組成胖手");

}

public void buildLegs() {

System.out.println("組成胖腿");

}

public void buildFoots() {

System.out.println("組成胖腳");

}

@Override

public String toString() {

return "胖虎";

}

}

package com.hy.bulider;

public class Thinner implements IPerson{

public void buildHead() {

System.out.println("組成瘦頭部");

}

public void buildBody() {

System.out.println("組成瘦身體");

}

public void buildArms() {

System.out.println("組成瘦胳膊");

}

public void buildHands() {

System.out.println("組成瘦手");

}

public void buildLegs() {

System.out.println("組成瘦腿");

}

public void buildFoots() {

System.out.println("組成瘦腳");

}

public String toString() {

return "小夫";

}

}

最后是測(cè)試類:

package com.hy.bulider;

public class Test {

public static void main(String[] args) {

Thinner thinner = new Thinner();

God god = new God(thinner);

god.createPerson();

Fatter fatter = new Fatter();

god = new God(fatter);

god.createPerson();

}

}

這樣工人工作的時(shí)候只需要選擇特定的模型,然后運(yùn)行機(jī)器就可以得到合格的玩具,而且不必關(guān)心裝配玩具的具體細(xì)節(jié)。即使后面新增了大雄靜香等需求訂單,只需要在機(jī)器中設(shè)定裝配程序就可以正常工作。

另外,如果有更多的細(xì)節(jié)的實(shí)現(xiàn),比如臉部的眼睛鼻子等等,則需要綜合權(quán)衡接口類中的構(gòu)造方法是否足夠普遍,別的具體構(gòu)造者實(shí)現(xiàn)是否需要這些方法。

建造者模式的結(jié)構(gòu)圖如下:

Bulider是為創(chuàng)建一個(gè)Product對(duì)象的各個(gè)部件指定的抽象接口。

ConcreteBuilder是具體的建造者,實(shí)現(xiàn)Builder接口構(gòu)造和裝配各個(gè)部件。

Product指具體的角色。

Director指揮者,構(gòu)建正在使用Builder接口的對(duì)象。

建造者模式主要應(yīng)用的場(chǎng)景:創(chuàng)建一些復(fù)雜的對(duì)象,這些對(duì)象內(nèi)部構(gòu)建間的建造順序是穩(wěn)定的,但對(duì)象內(nèi)部的構(gòu)建通常面臨著復(fù)雜的變化。即:當(dāng)創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于該對(duì)象的組成部分以及他們的裝配方法時(shí)適用建造者模式。

建造者模式好處:

1、最主要的好處是,使得對(duì)象的構(gòu)建與表示分離,可以讓表示獨(dú)立于過(guò)程而獨(dú)立的變化,并且客戶端不再需要關(guān)心具體的構(gòu)建過(guò)程和表示。

2、由于固定的表示由具體的制造者提供,所以要重復(fù)制造幾個(gè)表示相同的對(duì)象的時(shí)候,只需要讓指揮者控制制造者再進(jìn)行一次即可。

模板方法模式,遇到一系列步驟構(gòu)成的過(guò)程需要執(zhí)行,這個(gè)過(guò)程從高層次上看是相同的,這時(shí)把不變行為搬移到父類(超類),提供了一個(gè)代碼復(fù)用的平臺(tái),去除了類中的重復(fù)代碼來(lái)體現(xiàn)它的優(yōu)勢(shì)。也就是說(shuō),當(dāng)不變和可變的行為在方法的子類實(shí)現(xiàn)中混合在一起的時(shí)候,把這些行為搬移到單一的地方(父類/超類),幫助子類擺脫重復(fù)的不變行為的糾纏。

建造者模式的對(duì)象構(gòu)建過(guò)程和這個(gè)有些類似,對(duì)象的接口類中定義了對(duì)象普遍的構(gòu)造方法,具體的對(duì)象構(gòu)造者建造過(guò)程和細(xì)節(jié)。不同的地方在于建造者模式中對(duì)象的接口類只定義對(duì)象普遍的構(gòu)造方法,在建造類中定義了對(duì)象的構(gòu)造流程。若是沒(méi)有構(gòu)造者類,建造者模式可以看作一個(gè)模板方法模式。

模板方法模式是行為型模式,不僅描述對(duì)象或類的模式,還描述它們之間的通信方式,實(shí)現(xiàn)過(guò)程中采用繼承機(jī)制在類間分派行為。建造者模式是創(chuàng)建型模式,抽象了實(shí)例化過(guò)程。在實(shí)現(xiàn)方法的骨架層次上,建造者模式中使用的是組合的方式。所以建造者更靈活,而且也可以避免由繼承而引發(fā)的各種問(wèn)題。

總結(jié)

以上是生活随笔為你收集整理的java设计模式建造_java设计模式-建造者模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。