日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简说生成器模式

發(fā)布時間:2023/12/31 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简说生成器模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

設(shè)計(jì)模式之生成器模式

定義

生成器模式(又名建造者模式)是設(shè)計(jì)模式的一種,將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。 —— [ 百度百科 ]

解釋說明

在生成器模式中,對復(fù)雜對象的創(chuàng)建,我們抽象化出統(tǒng)一的創(chuàng)建流程,在各個創(chuàng)建流程中,我們可以按需實(shí)現(xiàn)不同的業(yè)務(wù)邏輯。在對外顯示中,我們使用統(tǒng)一的外部指導(dǎo)者,通過抽象化出的統(tǒng)一創(chuàng)建流程,創(chuàng)建復(fù)雜對象。

代碼塊
public class Test { //生成器接口-構(gòu)建統(tǒng)一的創(chuàng)建流程interface Builder{public abstract void hair();public abstract void clothes(); public abstract void shose(); public abstract Man build(); }//具體的生成器class ConcreteBuilder implements Builder{private Man man = new Man(); @Overridepublic Man build(){hair();clothes();shose();return this.man;}@Overridepublic void hair() { man.hair = "卷發(fā)";}@Overridepublic void clothes() {man.clothes = "皮夾克";}@Overridepublic void shose() {man.shose = "帆布鞋";} }//指導(dǎo)者-調(diào)用生成器生成對象class Director{public Director(ConcreteBuilder concreteBuilder){this.concreteBuilder = concreteBuilder;}public Man returnMan(){return this.concreteBuilder.build();}private ConcreteBuilder concreteBuilder;}//產(chǎn)品類-被生成對象class Man{public String hair;public String clothes;public String shose;public void say(){System.out.println("我的外貌特征:" + hair + "," + clothes + "," + shose);}}//測試public static void main(String[] args) {//實(shí)例化生成器ConcreteBuilder concreteBuilder = new Test().new ConcreteBuilder();//實(shí)例化指導(dǎo)者Director director = new Test().new Director(concreteBuilder);//實(shí)例化現(xiàn)有類Man man = director.returnMan();man.say();} }
代碼解讀

以上就是完整的生成器模式代碼實(shí)例。在以上代碼中,我們先抽象出一個生成器接口,此接口用于約束我們的產(chǎn)品(Man)類的創(chuàng)建流程。隨后創(chuàng)建的具體的生成器類(ConcreteBuilder),其中我們具體實(shí)現(xiàn)了一個復(fù)雜(Man)對象的生成過程。比如:需要什么樣的發(fā)型,需要什么樣的衣服,需要什么樣的鞋子。

當(dāng)然,上述的生成器類(ConcreteBuilder)只是一個簡單示范,在生成器模式中,該類可以有很多個,不同的生成器類具有不同的業(yè)務(wù)邏輯,從而保證了生成的產(chǎn)品類(Man)具有不一樣的屬性或者行為。

最后,我們創(chuàng)建一個指導(dǎo)類,用于調(diào)用具體的生成器類,從而標(biāo)準(zhǔn)化產(chǎn)品類創(chuàng)建的外部訪問接口,同時內(nèi)部可以有更加復(fù)雜的邏輯,以便滿足我們調(diào)用不同的生成器類創(chuàng)建不同的產(chǎn)品。

總結(jié)

優(yōu)點(diǎn)
  • 使用生成器模式可以使客戶端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié)。
  • 具體的建造者類之間是相互獨(dú)立的,對系統(tǒng)的擴(kuò)展非常有利。
  • 由于具體的建造者是獨(dú)立的,因此可以對建造過程逐步細(xì)化,而不對其他的模塊產(chǎn)生任何影響。
  • 試用場景
  • 需要生成一個產(chǎn)品對象有復(fù)雜的內(nèi)部結(jié)構(gòu)。每一個內(nèi)部成分本身可以是對象,也可以使一個對象的一個組成部分。
  • 需要生成的產(chǎn)品對象的屬性相互依賴。建造模式可以強(qiáng)制實(shí)行一種分步驟進(jìn)行的建造過程。
  • 總結(jié)

    以上是生活随笔為你收集整理的简说生成器模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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