成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java設(shè)計(jì)模式中構(gòu)造者模式怎么用

這篇文章將為大家詳細(xì)講解有關(guān)java設(shè)計(jì)模式中構(gòu)造者模式怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供渾江網(wǎng)站建設(shè)、渾江做網(wǎng)站、渾江網(wǎng)站設(shè)計(jì)、渾江網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、渾江企業(yè)網(wǎng)站模板建站服務(wù),10多年渾江做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

首先看下構(gòu)造這的類圖

java設(shè)計(jì)模式中構(gòu)造者模式怎么用


從這個(gè)圖可以看出構(gòu)造模式有四個(gè)模塊:

  • Director(導(dǎo)演角色),調(diào)用具體構(gòu)造者創(chuàng)建產(chǎn)品對象,他是負(fù)責(zé)從客戶端傳來指令交給具體干活的類。

  • Builder (抽象建造者),沒有具體的業(yè)務(wù)意義,就是抽象出具體構(gòu)造者的方法,簡單說就是為了多態(tài)。

  • ConcreteBuilder(具體構(gòu)造者),苦力,實(shí)打?qū)嵉陌蚜慵旌?,組裝好

  • Product(抽象產(chǎn)品),這里僅僅是一個(gè)抽象產(chǎn)品,具體業(yè)務(wù)也行更加復(fù)雜

  • ProductXXX(具體產(chǎn)品),對抽象產(chǎn)品的實(shí)現(xiàn)

具體的情況也許并非如上圖所示,如果確定系統(tǒng)開發(fā)過程中只有一個(gè)產(chǎn)品,那么沒有必要分成這么多抽象,Builder 轉(zhuǎn)化為一個(gè)具體構(gòu)造者,直接引入 Product 進(jìn)行處理也是可以的。

接下來還是來點(diǎn)代碼看看具體構(gòu)造者模式是怎么玩的。

public abstract class Product{//提供公共部分}public class ProductOne extends Product{//具體第一個(gè)產(chǎn)品相關(guān)屬性方法}public class ProductOne extends Product{//具體第二個(gè)產(chǎn)品相關(guān)屬性方法}

上面把產(chǎn)品類進(jìn)行了設(shè)定,可以在抽象產(chǎn)品中實(shí)現(xiàn)一些共用的,再聲明一些抽象方法迫使子類必須實(shí)現(xiàn)。接下看下 Builder 這塊。

public interface Builder{  public void buildOne();  public void buildTwo();  public Product retrievePro();
}

publc class ConcreteBuilderOne implements Builder{  private Product product=new ProductOne();  public void buildOne(){  //打造第一個(gè)零件
  }  public void buildTwo(){  //打造第二個(gè)零件
  }  public Product retrievePro(){  //組裝出產(chǎn)品2
  return product;
  }
}

publc class ConcreteBuilderTwo implements Builder{  private Product product=new ProductTwo();  public void buildOne(){  //打造第一個(gè)零件
  }  public void buildTwo(){  //打造第二個(gè)零件
  }  public Product retrievePro(){  //組裝出產(chǎn)品2
  return product;
  }
}

最終導(dǎo)演出來進(jìn)行組織下具體產(chǎn)品,給客戶端提供友好接口

public class Director{  private Builder builder;  //這里可以結(jié)合工廠模式
  public void construct(String type){    if("one".equals(type)){
      builder=new ConcreteBuilderOne()
      builder.buildOne();
      builder.buildTwo();
      builder.retrievePro();
    }else if("two".equals(type)){
      builder=new ConcreteBuilderTwo()
      builder.buildOne();
      builder.buildTwo();
      builder.retrievePro();
    }else{

    }
  }
}

上述也許過于公式化,舉個(gè)例子,有個(gè)人,姑且叫他東郭先生(還沒有遇到狼)吧,他要蓋房子,于是他找了張三打地基,李四砌墻,王五鋪瓦,最終東郭先生就蓋好了房子,圖例來表示如下

java設(shè)計(jì)模式中構(gòu)造者模式怎么用

東郭先生就是一個(gè)導(dǎo)演的角色,而張三李四王五就是具體的構(gòu)造者角色,東郭將蓋房子這個(gè)事分別交給他們?nèi)齻€(gè)來完成,最后自己放個(gè)炮仗就說自己蓋好房子了。

構(gòu)造者模式是在構(gòu)造比較復(fù)雜對象,并且該對象可以拆分多個(gè),每個(gè)拆分也是個(gè)對象或組成部分。可以對各個(gè)步驟進(jìn)行依賴,也就是分步驟進(jìn)行,如蓋房子,先打地基,然后砌墻,最后鋪瓦,這個(gè)順序不可錯(cuò)(導(dǎo)演的功能),因此在一個(gè)屬性在被賦值之前必須把另外一個(gè)屬性也要賦值這樣的情況,用構(gòu)造者很好使。

關(guān)于“java設(shè)計(jì)模式中構(gòu)造者模式怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

分享名稱:java設(shè)計(jì)模式中構(gòu)造者模式怎么用
文章起源:http://jinyejixie.com/article46/ggseeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、小程序開發(fā)、搜索引擎優(yōu)化微信小程序、電子商務(wù)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
鄂托克前旗| 五河县| 嘉兴市| 麻城市| 华亭县| 襄汾县| 蓬溪县| 蒙山县| 沁水县| 南陵县| 将乐县| 乐清市| 五大连池市| 萍乡市| 襄樊市| 平陆县| 和政县| 阜康市| 丰顺县| 云和县| 岚皋县| 新田县| 呼和浩特市| 治多县| 龙泉市| 碌曲县| 鞍山市| 资溪县| 屯门区| 和顺县| 临朐县| 永泰县| 醴陵市| 绥德县| 八宿县| 温宿县| 正宁县| 塔城市| 搜索| 洪洞县| 鄂伦春自治旗|