国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

設(shè)計(jì)模式(13)生成器模式(講解+應(yīng)用)

thursday / 2549人閱讀

摘要:目錄生成器模式為什么使用生成器模式應(yīng)用實(shí)例生成器模式生成器模式英是一種設(shè)計(jì)模式,又名建造模式,是一種對(duì)象構(gòu)建模式。

目錄

生成器模式+為什么使用生成器模式

應(yīng)用實(shí)例

生成器模式

生成器模式:(英:Builder Pattern)是一種設(shè)計(jì)模式,又名:建造模式,是一種對(duì)象構(gòu)建模式。它可以將復(fù)雜對(duì)象的建造過(guò)程抽象出來(lái)(抽象類別),使這個(gè)抽象過(guò)程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)(屬性)的對(duì)象。

構(gòu)建過(guò)程,也就是我們?cè)谝粋€(gè)類中的那些set方法,通常我們會(huì)通過(guò)set方法來(lái)對(duì)類中的屬性進(jìn)行一系列的設(shè)置,來(lái)獲取這些屬性,我們通常會(huì)通過(guò)get方法來(lái)獲得,如果一個(gè)類,其中的屬性比較多,我們的set方法因此也會(huì)比較多,加上類的其他方法,整個(gè)看起來(lái)就比較臃腫了,因此我們將這些比較繁雜的設(shè)置步驟多帶帶建一個(gè)類,來(lái)對(duì)該類進(jìn)行相應(yīng)的屬性設(shè)置,按照我們的要求構(gòu)造出原來(lái)的類,當(dāng)然這是從使得代碼簡(jiǎn)潔的角度來(lái)說(shuō),功能上有點(diǎn)類似于工廠模式,通過(guò)不同的生成器來(lái)生成各自具有不同特征的對(duì)象。不過(guò)接下來(lái)要講的Android中的AlertDialog并沒(méi)有體現(xiàn)這一點(diǎn)。

應(yīng)用實(shí)例

為了更充分了解生成器模式,下面是一段來(lái)自維基百科的對(duì)于生成器模式講解時(shí)用的一段代碼,從中,從中我們不難看出生成器模式的代碼結(jié)構(gòu)。

 //Pizza基類
 class Pizza {
   private String dough = "";
   private String sauce = "";
   private String topping = "";
 
   public void setDough (String dough)     { this.dough = dough; }
   public void setSauce (String sauce)     { this.sauce = sauce; }
   public void setTopping (String topping) { this.topping = topping; }
 }
 
 
 //pizza生成器抽象類
 abstract class PizzaBuilder {
   protected Pizza pizza;
 
   public Pizza getPizza() { return pizza; }
   public void createNewPizzaProduct() { pizza = new Pizza(); }
 
   public abstract void buildDough();
   public abstract void buildSauce();
   public abstract void buildTopping();
 }
 
 //具體的pizza生成器類
 class HawaiianPizzaBuilder extends PizzaBuilder {
   public void buildDough()   { pizza.setDough("cross"); }
   public void buildSauce()   { pizza.setSauce("mild"); }
   public void buildTopping() { pizza.setTopping("ham+pineapple"); }
 }
 
 
 class SpicyPizzaBuilder extends PizzaBuilder {
   public void buildDough()   { pizza.setDough("pan baked"); }
   public void buildSauce()   { pizza.setSauce("hot"); }
   public void buildTopping() { pizza.setTopping("pepperoni+salami"); }
 }
 
 //創(chuàng)建pizza
 class Waiter {
   private PizzaBuilder pizzaBuilder;
 
   public void setPizzaBuilder (PizzaBuilder pb) { pizzaBuilder = pb; }
   public Pizza getPizza() { return pizzaBuilder.getPizza(); }
 
   public void constructPizza() {
     pizzaBuilder.createNewPizzaProduct();
     pizzaBuilder.buildDough();
     pizzaBuilder.buildSauce();
     pizzaBuilder.buildTopping();
   }
 }
 
 //創(chuàng)建實(shí)例
 class BuilderExample {
   public static void main(String[] args) {
     Waiter waiter = new Waiter();
     PizzaBuilder hawaiian_pizzabuilder = new HawaiianPizzaBuilder();
     PizzaBuilder spicy_pizzabuilder = new SpicyPizzaBuilder();
 
     waiter.setPizzaBuilder ( hawaiian_pizzabuilder );
     waiter.constructPizza();
 
     Pizza pizza = waiter.getPizza();
   }
 }

但是Android中的Builder則作為了AlertDialog的一個(gè)內(nèi)部類用來(lái)對(duì)于AlertDialog的一些屬性的設(shè)置,然后通過(guò)內(nèi)部類創(chuàng)建一個(gè)實(shí)例出來(lái),這樣一來(lái),所起的作用也就是僅在于將屬性設(shè)置部分置于一個(gè)結(jié)構(gòu)包起來(lái),方便后期的維護(hù)。

至此設(shè)計(jì)模式中較為常用的模式講解學(xué)習(xí)心得分享結(jié)束,接下來(lái)開(kāi)始展開(kāi)JVM的系列文章,同時(shí)也會(huì)補(bǔ)充一些平時(shí)遇到的一些其它的設(shè)計(jì)模式等相關(guān)的東西。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/64652.html

相關(guān)文章

  • 慕課網(wǎng)_《探秘Spring AOP》學(xué)習(xí)總結(jié)

    時(shí)間:2017年09月03日星期日說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:https://github.com/zccodere/s...學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 面向切面 課程章節(jié) 概覽 AOP使用 AOP原理 AOP開(kāi)源運(yùn)用 課程實(shí)戰(zhàn) 課程總結(jié) 面向切面編程是一種...

    Tony_Zby 評(píng)論0 收藏0
  • webpack-demos:全網(wǎng)最貼心webpack系列教程和配套代碼

    摘要:全網(wǎng)最貼心系列教程和配套代碼歡迎關(guān)注個(gè)人技術(shù)博客。所以我花費(fèi)了個(gè)多月整理了這份教程,一共分成節(jié),每節(jié)都有講解,并且準(zhǔn)備了配套代碼。奈何深感水平不夠,只有一腔熱情,所以直接開(kāi)放了教程和源碼。 webpack-demos:全網(wǎng)最貼心 webpack 系列教程和配套代碼 歡迎關(guān)注個(gè)人技術(shù)博客:godbmw.com。每周 1 篇原創(chuàng)技術(shù)分享!開(kāi)源教程(webpack、設(shè)計(jì)模式)、面試刷題(偏前...

    LMou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<