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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

GOF23设计模式(创建型模式)建造者模式

發(fā)布時間:2023/11/28 生活经验 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GOF23设计模式(创建型模式)建造者模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用場景:

我們要建造一個復雜的產(chǎn)品,比如生產(chǎn)一輛汽車、一部手機,這都是由很多零部件組成的,這時候就需要用到我們的建造者模式,將每個零部件分別生產(chǎn),然后再裝配~~


以下,我將以一個手機的生產(chǎn)過程為實例,這里將手機分為三部分零件, screen屏幕、battery電池、speaker揚聲器:

  1. 首先創(chuàng)建Screen、Battery、Speaker這三個原件類,并根據(jù)這三個類創(chuàng)建手機類Phone、
package 三_創(chuàng)造者模式;
/*** 手機的組成*/
public class Phone {Screen screen;//屏幕Battery battery;//電池Speaker speaker;//揚聲器public Phone() {}public void setScreen(Screen screen) {this.screen = screen;}public void setBattery(Battery battery) {this.battery = battery;}public void setSpeaker(Speaker speaker) {this.speaker = speaker;}public Screen getScreen() {return screen;}public Battery getBattery() {return battery;}public Speaker getSpeaker() {return speaker;}
}//屏幕
class Screen {String name;public Screen(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}//電池
class Battery {String name;public Battery(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}//揚聲器
class Speaker {String name;public Speaker(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

? ? 2.?創(chuàng)建兩個接口,一個是用來生產(chǎn)手機三組件的PhoneBuilder,一個是用來裝配這三個組件的PhoneDirector

package 三_創(chuàng)造者模式;
/*** 構建手機子組件*/
public interface PhoneBuilder {Screen screenBuilder();Battery batteryBuilder();Speaker speakerBuilder();
}
package 三_創(chuàng)造者模式;/*** 組裝手機子組件*/
public interface PhoneDirector {Phone directorPhone();
}

? ?3. 根據(jù)上述兩個接口構造相應的實現(xiàn)類,這里以蘋果手機為例,創(chuàng)建一個iphoneBuilder用來生產(chǎn)蘋果手機的的三大組件,再創(chuàng)建一個iphoneDirector用來裝配蘋果手機這三個組件

package 三_創(chuàng)造者模式;/*** 蘋果手機組件的構造*/
public class iphoneBuilder implements PhoneBuilder {@Overridepublic Screen screenBuilder() {return new Screen("原彩顯示lcd屏");}@Overridepublic Battery batteryBuilder() {return new Battery("蘋果電池");}@Overridepublic Speaker speakerBuilder() {return new Speaker("雙揚聲器");}
}
package 三_創(chuàng)造者模式;/*** 裝配蘋果手機組件*/
public class iphoneDirector implements PhoneDirector {private iphoneBuilder iphonebuilder;//蘋果手機組件構造public iphoneDirector(iphoneBuilder iphonebuilder) {this.iphonebuilder = iphonebuilder;}@Overridepublic Phone directorPhone() {Battery battery = iphonebuilder.batteryBuilder();Screen screen = iphonebuilder.screenBuilder();Speaker speaker = iphonebuilder.speakerBuilder();//裝配手機對象Phone iphone = new Phone();iphone.setBattery(battery);iphone.setScreen(screen);iphone.setSpeaker(speaker);return iphone;}
}

? ?4.?最后我們主函數(shù)里面進行測試,我們實例化出一個蘋果手機對象

package 三_創(chuàng)造者模式;public class client {public static void main(String[] args) {PhoneDirector director = new iphoneDirector(new iphoneBuilder());Phone phone = director.directorPhone();System.out.println(phone.getBattery().getName());System.out.println(phone.getScreen().getName());System.out.println(phone.getSpeaker().getName());}
}

運行結果:


總結:

  • 分離了對象子組件的單獨構造(由 Builder來負責)和裝配(由 Director負責).從而可以構造出復雜的對象。這個模式適用于:某個對象的構建過程復雜的情況下使用。
  • 由于實現(xiàn)了構建和裝配的解耦。不同的構建器,相同的裝配,也可以做岀不同的對象;相同的構建器,不同的裝配順序也可以做岀不同的對象。也就是實現(xiàn)了構建算法、裝配算法的解耦,實現(xiàn)了更好的復用。

總結

以上是生活随笔為你收集整理的GOF23设计模式(创建型模式)建造者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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