多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > java語言實現創建型設計模式―創建者模式

java語言實現創建型設計模式―創建者模式

來源:程序員人生   發布時間:2015-06-06 08:17:24 閱讀次數:3265次

1、描寫

創建者模式單獨利用1個創建者類來創建對象并組建對象之間的關系,以簡化客戶端調用的復雜性。相對抽象方法模式來講,創建者模式增加了1個單獨的用于組裝對象和對象之間關系的創建者類,由該類來負責對象的組裝,以此來更加清晰地劃分各個類的職責。

創建者模式將1個復雜對象的構建和它的表示分離,使得一樣的構建進程可以創建不同的表示,而且對客戶端屏蔽了對象的構建細節,該模式主要由5個部份組成:組裝類、抽象創建者類,實現了抽象創建者類的具體創建者類,抽象產品類、實現了抽象產品類的具體產品類。在此可以看出與抽象方法模式相比多了1個組裝類。


2、創建者模式的優缺點

優點:在創建者模式中客戶端不再負責對象的創建和組裝,而是由1個具體的組裝類來完成這項功能,將組裝的責任交給組裝類,客戶端只負責對象的調用,從而更加明確了各個類的職責。

缺點:利用創建者模式可以創建出不同類型的產品,但是如果要創建的產品差異非常大就需要編寫多個創建者類來實現,這無疑增加了代碼的復雜性,而且創建者類只是在構造相干部件的發雜關系上有優勢,如果要增加1個部件還是需要改變原本的代碼,增加新的模塊。


3、源代碼

總述:1個公司有計算薪金和社保需求,我們有多個分公司,每一個分公司都要計算這兩項,現在我們需要創建分公司對象,利用各個對象調用各個公司計算這兩項業務的方法來得出結果,我需要以下幾個類:抽象工廠類(定義創建對象的接口),兩個子公司的具體工廠類(實現了抽象工廠類中創建對象的方法來產生具體的對象),抽象薪資類(定義薪資計算的標準接口),兩個子公司的具體薪資類(實現抽象薪資類中計算薪資的方法),抽象社保類(定義社保計算的標準接口),兩個子公司的具體社保類(實現抽象社保類中計算社保的方法),組裝類(負責對象的創建和兌現直接關系的組裝),客戶端調用類(用來調用組裝類組裝對象并調用相應的實現類方法)。

1、抽象工廠類

package tong.day5_1.builder; /** *抽象的工廠接口,在這個接口中定義了1個兩個抽象方法,分別創建薪資類對象和社保類對象,由實現該接口的具體類重寫該方法,分別創建自己類的對象 * @author tong * */ public interface AbstractFactory { //抽象方法,用于創建各種類的對象 public abstract Salary createSalary(); public abstract Insurance createInsurance(); }
2、具體工廠類
package tong.day5_1.builder; public class GuangdongFactory implements AbstractFactory { @Override public Salary createSalary() { return new GuangdongSalary(); } @Override public Insurance createInsurance() { return new GuangdongInsurance(); } }
package tong.day5_1.builder; /** * 具體工廠類實現抽象工廠中的所有方法,并返回該類的薪資對象和社保對象 * @author tong * */ public class ZhejiangFactory implements AbstractFactory { @Override public Salary createSalary() { return new ZhejiangSalary(); } @Override public Insurance createInsurance() { return new ZhejiangInsurance(); } }

3、抽象薪資類

package tong.day5_1.builder; /** * 定義1個薪資接口,所有公司的具體薪資計算都實現這個接口,并重寫計算薪資的方法computeSalary() * @author tong * */ public interface Salary { public void computeSalary(); }
4、具體薪資類

package tong.day5_1.builder; /** * 廣東分公司的薪資計算類實現了Salary接口,并重寫了該接口中的計算薪資的方法computeSalary() * @author tong * */ public class GuangdongSalary implements Salary { @Override public void computeSalary() { System.out.println("廣東分公司薪資計算"); } }
package tong.day5_1.builder; /** * 浙江分公司的薪資計算類實現了Salary接口,并重寫了該接口中的計算薪資的方法computeSalary() * @author tong * */ public class ZhejiangSalary implements Salary { @Override public void computeSalary() { System.out.println("浙江分公司薪資計算"); } }
5、抽象社保類
package tong.day5_1.builder; /** * 抽象社保類 * @author tong * */ public interface Insurance { public abstract void computeInsurance(); }
6、具體社保類

package tong.day5_1.builder; public class GuangdongInsurance implements Insurance { @Override public void computeInsurance() { System.out.println("廣東分公司社會保險計算"); } }
package tong.day5_1.builder; public class ZhejiangInsurance implements Insurance { @Override public void computeInsurance() { System.out.println("浙江分公司社會保險計算"); } }
6、組裝類

package tong.day5_1.builder; /** * 這里使用1個組裝類來簡化客戶端創建對象、初始化對象和構建對象之間的關系 * @author tong * */ public class Builder { private AbstractFactory abstractFactory; //根據傳入的參數肯定初始化哪一個公司的工廠類對象,這里使用多態,根據傳入的參數動態創建相應的對象 public Builder(AbstractFactory abstractFactory) { this.abstractFactory = abstractFactory; } //組裝的具體實現方法,調用類中計算薪金和社保的方法 public void moneySum() { Salary salary = abstractFactory.createSalary(); salary.computeSalary(); Insurance insurance = abstractFactory.createInsurance(); insurance.computeInsurance(); } }
7、客戶端調用類

package tong.day5_1.builder; /** * 客戶端在這里得到了簡化,不用再斟酌如何組裝創建和組裝對象,而只需要調用專門的組裝類來組裝對象 * @author tong * */ public class Client { public static void main(String[] args) { //組裝浙江分公司的對象 Builder builder = new Builder(new ZhejiangFactory()); builder.moneySum(); System.out.println("--------------"); //組裝廣東分公司的對象 builder = new Builder(new GuangdongFactory()); builder.moneySum(); } }

4、運行結果

創建者模式




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲精品日韩一区二区日本 | 91亚洲欧美综合高清在线 | 久久天天 | 亚洲精品一区二区三区网址 | 欧美性受一区二区三区 | 久久久亚洲欧美综合 | 久久久久免费精品国产 | 日韩一区国产二区欧美三区 | 欧美在线看片 | 国产精品成人不卡在线观看 | 中文字幕丰满乱码 | 欧美3p在线观看一区二区三区 | 国产精品亚洲精品一区二区三区 | 欧美亚洲日本在线 | 青青国产成人精品视频 | 精品无码久久久久久国产 | 日韩欧| 久久毛片免费看 | 国产黄色免费在线观看 | 亚欧美图片自偷自拍另类 | 午夜网站免费版在线观看 | 亚洲人成网址在线观看 | 亚洲美女激情视频 | 亚洲人成77777在线播放网站不卡 | 中文字幕亚洲无线码a | 亚洲视频在线观看网址 | 最新欧美日韩 | 一级毛片a女人刺激视频免费 | 国产精品久久久久久久午夜片 | 午夜大片免费男女爽爽影院久久 | 一区二区三区欧美 | 亚洲人成在线影院 | 一区二区三区四区在线免费观看 | 午夜羞羞视频在线观看 | 国产美女福利视频福利 | 精品一区二区影院在线 | 中文国产成人精品久久水 | 欧美一区二区三区四区在线观看 | 国产亚洲精品久久 | 激情视频在线观看网站 | 波多野结衣一区在线观看 |