您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java建造者模式案例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java建造者模式案例分析”吧!
建造者(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建造者模式案例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。