我工作的那點事--學習《設計模式》例項應用(Builder模式)
Builder模式定義:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示.Builder模式是一步一步建立一個複雜的物件,它允許使用者可以只透過指定複雜物件的型別和內容就可以構建它們.
今天無意中在抽屜裡發現以前的工資條,看見上面的各項:基本工資,車貼,飯貼,交通費,養老保險,醫療保險,失業保險,住房公積金,個稅,等等……。突然想到 Builder這個模式,其實從這個工資條上也可以看出,
1.到手的工資額:工資的貨幣價格體現,是個Product
2.工資條的各部分實現:builder,裡面包括 基本工資,車貼,飯貼,交通費,養老保險,醫療保險,失業保險,住房公積金,個稅 各部門。
為了簡單說明 只有只歸納為:補貼,保險,個稅,基本工資 四個部分
3.會計:Director 決定每個月你那些部分要進行計算。
具體實現過程如下:
1.構建工資條的各部分實現:Builder
public interface Builder {
//建立補貼部分
void buildPartOtherFee(double money);
//建立保險部分
void buildPartInsuranc(double money);
//建立基本工資部分
void buildPartBaseSalary(double money);
//建立個稅部分
void buildPartTax(double money);
//得到最終工資
double getTrueSalary();
}
2.具體實現類,根據相關法律規定各部分的實現情況 以及最後工資的組裝
public class ConcreteBuilder implements Builder {
double partOtherFee = 0;
double partInsuranc = 0;
double partBaseSalary = 0;
double partTax = 0;
//建立補貼部分
void buildPartOtherFee(double money){
partOther = money;
};
//建立保險部分
void buildPartInsuranc(double money){
double houseFond = money * 0.07;//住房公積金
double futureFond = money * 0.08;//養老保險
double medicalFond = money * 0.02;//醫療保險
double loseWorkFond = money * 0.01;//失業保險
partInsuranc = houseFond + futureFond + medicalFond + loseWorkFond;
};
//建立基本工資部分
void buildPartBaseSalary(double money){
partBaseSalary = money;
};
//建立個稅部分
void buildPartTax(double money){
double tempMoney;
/*
一系列計算公式後
*/
partTax = tempMoney;
};
//得到最終工資
double getTrueSalary(){
//組裝過程
return partBaseSalary + partOtherFee - partInsuranc - partTax;
};
}
3. 看看會計將覺得怎麼算你的工資
public class Director {
private Builder builder;
public Director( Builder builder ) {
this.builder = builder;
}
//這裡是將各部分計算,得到最後工資的過程
public void construct(double base,double other) {
builder.buildPartOtherFee(other);//給你補貼
builder.buildPartInsuranc(base);//給你保險:注意這裡有可能不給你哦:)
builder.buildPartBaseSalary(base);
builder.buildPartTax(base);//這個是必須的,給國家貢獻嘛
}
}
4. 下面就開始發工資了,呵呵:
ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director( builder );
director.construct(10000,1000);//給你一個月1w,1k 補貼 爽啊
double trueSalary = builder.getResult(); //最後真正到手的工資,發現原來還是那麼少。
參考:板橋里人
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9879276/viewspace-983346/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式學習之單例模式設計模式單例
- 設計模式:Builder模式概述設計模式UI
- 設計模式應用舉例設計模式
- 設計模式快速學習(三)單例模式設計模式單例
- 設計模式學習筆記——單例模式設計模式筆記單例
- C++學習隨筆——簡單的單例設計模式例項C++單例設計模式
- Java設計模式之builder模式Java設計模式UI
- 設計模式-建造者模式(Builder)設計模式UI
- 小學生學習設計模式之單例模式設計模式單例
- 從JavaScript學習設計模式-02單例模式JavaScript設計模式單例
- 設計模式學習(一)單例模式補充——單例模式析構設計模式單例
- 設計模式--建造者模式(Builder Pattern)設計模式UI
- 【設計模式筆記】(二)- Builder模式設計模式筆記UI
- 設計模式-生成器模式Builder設計模式UI
- 【設計模式】- 生成器模式(Builder)設計模式UI
- 設計模式:命令模式(Command Pattern)及例項設計模式
- 設計模式例項程式碼設計模式
- Java設計模式學習筆記(五) 單例模式Java設計模式筆記單例
- 設計模式學習-使用go實現單例模式設計模式Go單例
- 重學設計模式-單例模式設計模式單例
- 設計模式學習筆記(十二)享元模式及其應用設計模式筆記
- 設計模式學習筆記(九)橋接模式及其應用設計模式筆記橋接
- 《設計模式》 - 3. 建立者模式( Builder )設計模式UI
- 設計模式(五)Builder構建者模式設計模式UI
- 設計模式學習(一)單例模式補充——指令重排設計模式單例
- 設計模式學習筆記(十)裝飾器模式及其應用設計模式筆記
- 設計模式學習(一)單例模式的幾種實現方式設計模式單例
- 《我是面試官》設計模式-單例模式面試設計模式單例
- 設計模式十: 生成器模式(Builder Pattern)設計模式UI
- 重識設計模式-建造者模式(Builder Pattern)設計模式UI
- C#設計模式-建造者模式(Builder Pattern)C#設計模式UI
- 設計模式學習——代理模式設計模式
- C# socket 阻止模式與非阻止模式應用例項C#模式
- JAVA物件導向高階:static的應用知識--單例模式 單例設計模式應用場景及好處 單例設計模式的實現方式Java物件單例設計模式
- 設計模式學習筆記(十七)中介者模式及其應用場景設計模式筆記
- 用Python實現設計模式——單例模式Python設計模式單例
- 設計模式(4)——單例模式的學習及其六大戰將設計模式單例
- 設計模式(一)學習設計模式的好處設計模式
- 設計模式(單例模式)設計模式單例