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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

设计模式-Builder模式

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

目錄

  • 一個(gè)例子(做湯)
  • 人工做湯
  • 機(jī)器做湯(使用Builder模式)
  • 優(yōu)缺點(diǎn)
    • 優(yōu)點(diǎn)
    • 缺點(diǎn)

Builder模式屬于創(chuàng)建型模式。
它是將一個(gè)復(fù)雜對(duì)象的構(gòu)建過(guò)程隱藏起來(lái),讓使用者只關(guān)系自己要生成什么樣的對(duì)象。即創(chuàng)建和表示分離。

一個(gè)例子(做湯)

我需要做兩種湯:小雞燉蘑菇湯和海帶排骨湯。
做湯工序如下:

海帶排骨湯:

  • 加入海帶;
  • 加入排骨;
  • 加入海帶排骨精粉;
  • 煮湯;
  • 小雞燉蘑菇:

  • 加入小雞兒;
  • 加入蘑菇;
  • 加入小雞燉蘑菇精粉;
  • 煮湯;
  • 聲明“湯”對(duì)象:

    public class Soup {/*** 材料1*/private String cailiao1;/*** 材料2*/private String cailiao2;/*** 材料3*/private String cailiao3;//getter/setter省略@Overridepublic String toString() {return "Soup{" +"cailiao1='" + cailiao1 + '\'' +", cailiao2='" + cailiao2 + '\'' +", cailiao3='" + cailiao3 + '\'' +'}';} }

    人工做湯

    //人工做湯System.out.println("-----人工做湯-----");//制作小雞燉蘑菇湯System.out.println("-----制作小雞燉蘑菇-----");Soup xiaojimoguSoup = new Soup();xiaojimoguSoup.setCailiao1("小雞兒");xiaojimoguSoup.setCailiao2("蘑菇");xiaojimoguSoup.setCailiao3("小雞燉蘑菇精粉");System.out.println("小雞燉蘑菇:"+xiaojimoguSoup);//制作海帶排骨湯System.out.println("-----制作海帶排骨湯-----");Soup haidaipaiguSoup = new Soup();haidaipaiguSoup.setCailiao1("海帶");haidaipaiguSoup.setCailiao2("排骨");haidaipaiguSoup.setCailiao3("海帶排骨精粉");System.out.println("海帶排骨湯:"+haidaipaiguSoup);

    可以看到做湯的時(shí)候需要添加什么材料全靠我自己去操作,這無(wú)疑是很復(fù)雜且繁瑣的。

    機(jī)器做湯(使用Builder模式)

    現(xiàn)在我購(gòu)買了一個(gè)做湯的==機(jī)器==,可以做各種各樣的湯,這取決于你給機(jī)器選擇什么樣的==程序==。

    做湯程序通用接口:

    public interface SoupProgram {void step1();//步驟1void step2();//步驟2void step3();//步驟3Soup make();//做湯 }

    做小雞燉蘑菇的程序:

    public class XiaojimoguSoupProgram implements SoupProgram {private Soup soup = new Soup();@Overridepublic void step1() {soup.setCailiao1("小雞兒");System.out.println("加入小雞兒");}@Overridepublic void step2() {soup.setCailiao2("蘑菇");System.out.println("加入蘑菇");}@Overridepublic void step3() {soup.setCailiao3("小雞燉蘑菇精粉");System.out.println("加入小雞燉蘑菇精粉");}@Overridepublic Soup make() {System.out.println("小雞燉蘑菇湯制作好啦~");return soup;} }

    做海帶排骨湯程序:

    public class HaidaipaiguSoupProgram implements SoupProgram {private Soup soup = new Soup();@Overridepublic void step1() {soup.setCailiao1("海帶");System.out.println("加入海帶");}@Overridepublic void step2() {soup.setCailiao2("排骨");System.out.println("加入排骨");}@Overridepublic void step3() {soup.setCailiao3("海帶排骨精粉");System.out.println("加入海帶排骨精粉");}@Overridepublic Soup make() {System.out.println("海帶排骨湯制作好啦~");return soup;} }

    做湯機(jī)器:

    public class SoupMakeMachine {public static Soup builder(SoupProgram program) {program.step1();program.step2();program.step3();return program.make();} }

    現(xiàn)在我只需要選擇使用哪個(gè)做湯程序就可以用機(jī)器來(lái)完成做湯了。

    //機(jī)器做湯System.out.println("-----機(jī)器做湯-----");//制作小雞燉蘑菇湯System.out.println("-----制作小雞燉蘑菇-----");SoupProgram program = new XiaojimoguSoupProgram();System.out.println("小雞燉蘑菇:"+SoupMakeMachine.builder(program));//制作海帶排骨湯System.out.println("-----制作海帶排骨湯-----");SoupProgram program1 = new HaidaipaiguSoupProgram();System.out.println("海帶排骨湯:"+SoupMakeMachine.builder(program1));

    優(yōu)缺點(diǎn)

    優(yōu)點(diǎn)

    1.隱藏對(duì)象的創(chuàng)建過(guò)程,將對(duì)象創(chuàng)建過(guò)程和對(duì)象本身解耦,使用者只需要關(guān)心要?jiǎng)?chuàng)建什么樣的東西。通過(guò)這個(gè)例子人工和機(jī)器做湯的比較,很明顯能發(fā)現(xiàn)使用機(jī)器能方便很多。現(xiàn)實(shí)生活中也是如此(如工廠流水線)。

    2.方便擴(kuò)展。上面也提到了,機(jī)器做湯,做什么樣的湯取決于選擇什么樣的程序,如果你想做玉米蘿卜湯,那你只需要給機(jī)器植入做玉米蘿卜湯的程序(即實(shí)現(xiàn)SoupProgram接口)。

    3.遵循了“開(kāi)閉原則”。對(duì)象應(yīng)該對(duì)擴(kuò)展開(kāi)放對(duì)修改關(guān)閉。

    缺點(diǎn)

    通過(guò)上面的代碼,很明顯能感覺(jué)到,使用這個(gè)Builder設(shè)計(jì)模式以后引入了更多的類和接口,增加了復(fù)雜度。


    你可以在這里獲取相關(guān)代碼:設(shè)計(jì)模式-Builder模式

    轉(zhuǎn)載于:https://www.cnblogs.com/xuxiaojian/p/11460397.html

    總結(jié)

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

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