<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
建造者(Builder)模式的定義: 指將一個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示,這樣的設計模式被稱為建造者模式。它是將一個複雜的物件分解為多個簡單的物件,然後一步一步構建而成。它將變與不變相分離,即產品的組成部分是不變的,但每一部分是可以靈活選擇的。
1、封裝性好,構建和表示分離。
2、擴充套件性好,各個具體的建造者相互獨立,有利於系統的解耦。
3、使用者端不必知道產品內部組成的細節,建造者可以對建立過程逐步細化,而不對其它模組產生任何影響,便於控制細節風險。
1、產品的組成部分必須相同,這限制了其使用範圍。
2、如果產品的內部變化複雜,如果產品內部發生變化,則建造者也要同步修改,後期維護成本較大。
建造者(Builder)模式和工廠模式的關注點不同:建造者模式注重零部件的組裝過程,而工廠方法模式更注重零部件的建立過程,但兩者可以結合使用。
案例: 神醫豆豆煉丹
產品角色(Product):丹藥
抽象建造者(Builder):抽象丹方
具體建造者(Concrete Builder):具體丹方
指揮者(Director):神醫豆豆
神醫豆豆煉製九轉仙丹和太虛化神丹
注意:為了省事這裡說的丹方內容只有丹藥名字和效果,並沒有材料之類的。
丹藥類宣告煉丹的名稱和效果兩個屬性
public class Dan { /* cailiao 丹藥的名稱 danhuo 丹藥的效果*/ private String name; private String xiaoguo; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getXiaoguo() { return xiaoguo; } public void setXiaoguo(String xiaoguo) { this.xiaoguo = xiaoguo; } }
抽象類,new一個丹藥物件,宣告兩個抽象方法分別是給丹藥命名和賦予丹藥效果,還有一個生成丹藥的方法。
//抽象丹方 abstract class DanFang { Dan dan = new Dan(); public abstract void name(); public abstract void xiaoguo(); public Dan getDan() { return dan; } }
具體丹方類繼承丹方類,並且實現兩個抽象方法。
//九轉仙丹丹方 public class JiuZhuan extends DanFang { @Override public void name() { dan.setName("九轉仙丹"); } @Override public void xiaoguo() { dan.setXiaoguo("原地成仙"); } }
具體丹方類繼承丹方類,並且實現兩個抽象方法。
//太虛化神丹丹方 public class Taixu extends DanFang { @Override public void name() { dan.setName("太虛化神丹"); } @Override public void xiaoguo() { dan.setXiaoguo("意念化神"); } }
宣告一個丹方屬性,一個有參構造方法,一個煉丹方法。
public class DouDou { private final DanFang danLu; public DouDou(DanFang danLu) { this.danLu = danLu; } //煉丹方法 public Dan lian() { //放入材料 danLu.name(); //釋放丹火 danLu.xiaoguo(); //成丹 return danLu.getDan(); } }
煉製兩個丹藥。
public class Demo { public static void main(String[] args) { //煉製九轉仙丹 //new一個九轉仙丹的丹方 DanFang jiu = new JiuZhuan(); //把丹方給豆豆 DouDou dou = new DouDou(jiu); //煉丹生成丹藥 Dan dan = dou.lian(); System.out.printf("丹藥名稱:%s 丹藥效果:%s", dan.getName(), dan.getXiaoguo()); System.out.println(); //煉製太虛化神丹 //new一個九轉仙丹的丹方 DanFang tai = new Taixu(); //把丹方給豆豆 DouDou dous = new DouDou(tai); //煉丹生成丹藥 Dan dans = dous.lian(); System.out.printf("丹藥名稱:%s 丹藥效果:%s", dans.getName(), dans.getXiaoguo()); } }
神醫豆豆有一套煉製丹藥的方流程,所以不論丹方如何變化,但是煉丹流程都一樣。想要煉製其他丹藥只需要一個丹方就可以完成。
到此這篇關於Java 設計模式以虹貓藍兔的故事講解建造者模式的文章就介紹到這了,更多相關Java 建造者模式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45