`
biqing0427
  • 浏览: 57296 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

我工作的那点事--学习《设计模式》实例应用(Builder模式)

阅读更多
今天无意中在抽屉里发现以前的工资条,看见上面的各项:基本工资,车贴,饭贴,交通费,养老保险,医疗保险,失业保险,住房公积金,个税,等等……。突然想到 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(); //最后真正到手的工资,发现原来还是那么少。


参考:板桥里人 http://www.jdon.com
分享到:
评论

相关推荐

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    设计模式的学习不仅是为了记住每种模式的应用场景,更重要的是理解其背后的原理和设计理念。通过深入学习和实践,开发者可以逐渐掌握这些模式,并将其内化为自己的设计思维。设计模式的学习过程虽然漫长且充满挑战,...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    C++源代码文件可以帮助你更好地理解如何在实际项目中应用这些模式,通过阅读和分析代码,你可以学习如何在C++中实现这些设计模式,并将它们融入到自己的编程实践中。 总而言之,设计模式是软件开发中的宝贵财富,...

    设计模式-Builder模式demo

    Builder模式是一种创建型设计模式,它提供了一种创建对象的抽象接口,并允许子类按照步骤构建复杂的对象。这种模式将对象的创建过程分离出来,使得同样的构造过程可以创建不同的表示,从而实现对象创建过程的解耦。 ...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    ### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 0. 引言 设计模式是软件工程领域的一个重要概念,它提供了一种解决常见问题的方法论。GoF(Gang of Four)所提出的23种设计模式被视为面向对象设计的...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    通过学习和掌握GoF的23种设计模式,可以显著提高程序员的编码水平,使得开发出的软件系统更加健壮、可扩展、易维护。以上每种模式都有其特定的应用场景,理解和掌握它们的关键在于不断实践和总结,在实际项目中灵活...

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码

    ### 设计模式精解—GoF 23种设计模式解析及C++实现源码 #### 0. 引言 设计模式作为一种重要的面向对象设计工具,在软件开发中扮演着至关重要的角色。本文旨在深入解析GoF(Gang of Four,四人组)提出的23种设计...

    设计模式精解-GoF23种设计模式解析附C++实现源码

    C++实现源码提供了具体编程环境下的应用实例,帮助读者更好地理解和应用这些设计模式。通过阅读和实践这些源码,开发者可以更深入地掌握如何在实际项目中灵活运用设计模式,提升代码质量和可维护性。

    设计模式那点事

    《设计模式那点事》这本书的PPT为我们提供了一种深入理解和学习设计模式的途径。在这里,我们将深入探讨设计模式的核心概念、分类以及它们在实际开发中的应用。 首先,设计模式基于面向对象编程思想,其核心目标是...

    设计模式精解-GoF 23种设计模式解析

    设计模式的学习和应用分为几个阶段:首先自己学会设计模式,然后将其转化为自己的语言表达出来,接着是教授他人并最终记录下来。这种学习路径要求学习者不仅要理解设计模式本身,还要具备清晰的表达能力和深刻的理解...

    Java的设计模式和应用场景以及代码实例

    摘要:本文讨论了 Java 中的设计模式和应用场景,包括抽象工厂和 Builder 模式,并提供了实例代码。这些设计模式可以帮助开发者解决软件系统中的常见问题,如对象创建和组合、需求变化等。 一、抽象工厂模式 抽象...

    builder设计模式源码

    Builder设计模式是一种软件设计模式,它允许我们分步骤构建复杂对象,通过将构造过程与对象的表示分离,使得相同的构造过程可以创建不同的表示。在Java或者其他面向对象编程语言中,Builder模式经常被用来提高代码的...

    24种设计模式以及混合设计模式

    通过学习和应用这些设计模式,开发者不仅可以提高代码的可读性、可维护性和可扩展性,还能提升团队间的沟通效率,因为设计模式是软件工程中的通用语言。对于任何有志于提升软件开发水平的人来说,理解和掌握设计模式...

    java设计模式实例

    Java设计模式是面向对象编程中的重要概念,它们是软件开发过程中经过反复验证并总结出的最佳实践,用于解决常见...在阅读和实践这些Java设计模式实例时,要注意理解每个模式的核心思想,以及如何在实际项目中灵活运用。

    设计模式精解-GoF 23种设计模式解析附

    通过学习设计模式,我们可以更好地组织代码结构,提高软件质量,同时减少开发过程中的重复工作。本文将详细介绍GoF提出的23种设计模式,并提供C++实现示例,帮助读者深入理解这些模式的应用场景和技术细节。 #### ...

Global site tag (gtag.js) - Google Analytics