真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java生成器模式怎么實現(xiàn)

本篇內(nèi)容主要講解“java生成器模式怎么實現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“java生成器模式怎么實現(xiàn)”吧!

成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、小程序開發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10余年以來,已經(jīng)為1000多家成都衛(wèi)生間隔斷各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的1000多家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。

定義:

        將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。生成器模式利用一個導(dǎo)演者對象和具體建造者對象一個一個地建造出所有的零件,從而建造出完整的對象。

四個要素:

        Builder:生成器接口,定義創(chuàng)建一個Product對象所需要的各個部件的操作。

        ConcreteBuilder:具體的生成器實現(xiàn),實現(xiàn)各個部件的創(chuàng)建,并負(fù)責(zé)組裝Product對象的各個部件,同時還提供一個讓用戶獲取組裝完成后的產(chǎn)品對象的方法。

        Director:指導(dǎo)者,也被稱導(dǎo)向者,主要用來使用Builder接口,以一個統(tǒng)一的過程來構(gòu)建所需要的Product對象。

        Product:產(chǎn)品,表示被生成器構(gòu)建的復(fù)雜對象,包含多個部件。

示例:

        網(wǎng)上有用KFC的例子來描述生成器模式,比較通俗易懂。
        假設(shè)KFC推出兩種套餐:奧爾良雞腿堡套餐和香辣雞腿堡套餐。

        奧爾良套餐包括:一個奧爾良雞腿堡、一個炸雞翅、一杯雪碧。

        雞腿堡套餐包括:一個香辣雞腿堡、一份薯條、一杯可樂。

        每份套餐都是:主食、副食、飲料。
        KFC服務(wù)員要根據(jù)顧客的要求來提供套餐,那這個需求里面什么是固定的,什么是變化的呢?很明顯顧客都是要的套餐,顧客的目的是一樣的。 套餐里面都是主食、副食、飲料,這也是固定的。至于主食是什么、副食是什么、飲料是什么,這個是變化的。

        在實際的軟件開發(fā)過程中,有時候面臨著“一個復(fù)雜對象”的創(chuàng)建工作,其通常由各個部分的子對象采用一定的組合構(gòu)成,由于需求的變化,這個復(fù)雜對象的各個部分或者其子對象經(jīng)常要變化(例如,雞腿堡套餐的顧客不喜歡可樂,要換奶茶),但是他們的結(jié)構(gòu)卻相對穩(wěn)定(套餐都得是一份主食,副食及飲料)。當(dāng)遇到這種場景時,使用生成器模式比較合適。

定義一個產(chǎn)品類:

public class Entity1{...}
public class Entity2{...}
public class Entity3{...}
public class Product{      Entity1 entity1;      Entity2 entity2;      Entity3 entity3; }

產(chǎn)品類中的各個小模塊是不一樣的,由他們建造組成產(chǎn)品。

根據(jù)具體場景要求,定義n個生成器類:

public interface IBuild{      
   public void createEntity1();      
   public void createEntity2();    
    public void createEntity3();      
   public Product composite();      
   public Product create();     }
public class BuildProduct implements IBuild{      Product p = new Product();
      public void createEntity1(){
      //p.entity1 = ...        }      
      public Product create(){
         return composite();      }        ...... }
public class BuildProduct1 implements IBuild{      Product p = new Product();                      
      public void createEntity1(){
                //p.entity1 = ...        }        ...... }

定義一個指揮者類,統(tǒng)一調(diào)度project:

public class Director{
     private IBuild build;
     public Director(IBuild build){
            this.build = buid;        }    
     public Product build(){           build.create();      }    
     public static void main(){         IBuild build = new BuildProduct();         Director direcotr = new Director(build);         Prodcut p = director.build();        } }

優(yōu)點:

        1,使用生成器模式可以使客戶端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié)。

        2,具體的建造者類之間是相互獨立的,對系統(tǒng)的擴展非常有利。

        3,由于具體的建造者是獨立的,因此可以對建造過程逐步細(xì)化,而不對其他的模塊產(chǎn)生任何影響。

缺點:

        建造者模式的“加工工藝”是暴露的,這樣使得建造者模式更加靈活,也使得工藝變得對客戶不透明。(待考證,筆者這里不是很理解,歡迎說自己的見解)

應(yīng)用場景:

        1,需要生成一個產(chǎn)品對象有復(fù)雜的內(nèi)部結(jié)構(gòu)。每一個內(nèi)部成分本身可以是對象,也可以使一個對象的一個組成部分。

        2,需要生成的產(chǎn)品對象的屬性相互依賴。建造模式可以強制實行一種分步驟進行的建造過程。

        3,在對象創(chuàng)建過程中會使用到系統(tǒng)中的其他一些對象,這些對象在產(chǎn)品對象的創(chuàng)建過程中不易得到

到此,相信大家對“java生成器模式怎么實現(xiàn)”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站標(biāo)題:java生成器模式怎么實現(xiàn)
當(dāng)前URL:http://weahome.cn/article/jgjepd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部