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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式-Builder模式

發布時間:2025/6/17 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式-Builder模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一個例子(做湯)
  • 人工做湯
  • 機器做湯(使用Builder模式)
  • 優缺點
    • 優點
    • 缺點

Builder模式屬于創建型模式。
它是將一個復雜對象的構建過程隱藏起來,讓使用者只關系自己要生成什么樣的對象。即創建和表示分離。

一個例子(做湯)

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

海帶排骨湯:

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

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

    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);

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

    機器做湯(使用Builder模式)

    現在我購買了一個做湯的==機器==,可以做各種各樣的湯,這取決于你給機器選擇什么樣的==程序==。

    做湯程序通用接口:

    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;} }

    做湯機器:

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

    現在我只需要選擇使用哪個做湯程序就可以用機器來完成做湯了。

    //機器做湯System.out.println("-----機器做湯-----");//制作小雞燉蘑菇湯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));

    優缺點

    優點

    1.隱藏對象的創建過程,將對象創建過程和對象本身解耦,使用者只需要關心要創建什么樣的東西。通過這個例子人工和機器做湯的比較,很明顯能發現使用機器能方便很多。現實生活中也是如此(如工廠流水線)。

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

    3.遵循了“開閉原則”。對象應該對擴展開放對修改關閉。

    缺點

    通過上面的代碼,很明顯能感覺到,使用這個Builder設計模式以后引入了更多的類和接口,增加了復雜度。


    你可以在這里獲取相關代碼:設計模式-Builder模式

    轉載于:https://www.cnblogs.com/xuxiaojian/p/11460397.html

    總結

    以上是生活随笔為你收集整理的设计模式-Builder模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。