深入浅出设计模式(四):6.创建者模式
来源:互联网 发布:什么是淘宝企业店铺 编辑:程序博客网 时间:2024/06/08 11:52
6.创建者模式(Builder)
在抽象工厂模式中,一个具体的工厂类负责创建一系列相互关联的对象,但此时工厂类的职责并不单一,如果组装变得复杂,则工厂类将会变得很庞大,不利于维护。创建者模式就是将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示,而且客户端不用知道对象的构建细节。
创建者模式的实现原理
创建者模式在薪酬模块的实际应用
在薪酬模块中,需要对员工的基本工资、奖金、保险、个人所得税等进行计算,而且需要区分不同的工种,比如劳务工、合同工等。
Factory
//抽象工厂类 public abstract class Factory { protected abstract BasePay getBasePay(); protected abstract Bonus getBonus();}
ContractFactory
//定义合同工的工厂类 public class ContractFactory extends Factory { public BasePay getBasePay(){ return new ContractBasePay(); } public Bonus getBonus(){ return new ContractBonus(); }}
WorkerFactory
//劳务工的工厂类 public class WorkerFactory extends Factory { public BasePay getBasePay(){ return new WorkerBasePay(); } public Bonus getBonus(){ return new WorkerBonus(); }}
BasePay
// 薪资计算(产品)接口 public interface BasePay { public String doBasePay(String name);}
ContractBasePay
// 合同工的薪资计算(产品)实现类 public class ContractBasePay implements BasePay { @Override public String doBasePay(String name) { // TODO Auto-generated method stub return name + "基本工资开始计算"; }}
WorkerBasePay
//劳务工的信自己算(产品)实现类 public class WorkerBasePay implements BasePay { @Override public String doBasePay(String name) { return name + "基本工资开始计算"; } }
Bonus
//奖金计算(产品)的接口类 public interface Bonus { public String doBonus(String name);}
ContractBonus
//合同工的奖金计算(产品)实现类 public class ContractBonus implements Bonus { @Override public String doBonus(String name) { // TODO Auto-generated method stub return name + "奖金开始计算"; } }
WorkerBonus
//劳务工的奖金计算(产品)实现类 public class WorkerBonus implements Bonus { @Override public String doBonus(String name) { // TODO Auto-generated method stub return name + "奖金开始计算"; } }
Director
//定义创建者类 public class Director { private Factory factory; public Factory getFactory() { return factory; } public void setFactory(Factory factory) { this.factory = factory; } /** * 薪资计算过程 */ public String doSalary(String name){ BasePay basePay = factory.getBasePay(); Bonus bonus = factory.getBonus(); return basePay.doBasePay(name) + "---" + "---" + bonus.doBonus(name) ; } }
Client
public class Client { public static void main (String[] args) { Director director = new Director(); director.setFactory(new WorkerFactory()); System.out.println(director.doSalary("劳务工")); }}
0 0
- 深入浅出设计模式(四):6.创建者模式
- 设计模式 (四)创建者模式(Builder)
- 设计模式 (四)创建者模式(Builder)
- 设计模式 (四)创建者模式(Builder)
- 设计模式--创建者模式
- 设计模式-创建者模式
- 深入浅出设计模式(四)
- (创建型模式四)创建者模式
- 设计模式学习(六)创建者模式
- 设计模式系列(12)创建者模式
- 设计模式(04)创建者模式
- 设计模式(一)创建者模式
- 创建者设计模式
- 设计模式系列-创建者模式
- 设计模式之创建者模式
- 设计模式-创建者模式(Builder)
- 设计模式之创建者模式
- 设计模式之创建者模式
- vlc简单搭建流媒体服务器
- jquery on()方法及其参数使用
- Dynamics CRM 视图显示列的拷贝—view layout replicator
- Eclipse使用gradle的配置
- 华为机试——从5个人中选取2个人作为礼仪
- 深入浅出设计模式(四):6.创建者模式
- 如何在自己的项目中引入tinymce富文本编辑器
- Cocos2dx网络学习笔记(一)
- android软键盘操作
- 数据库锁的基本原理
- JavaScript之Date
- 命令行下执行php脚本
- AdBlock Plus安装
- java微信接口开发java SpringMVC mybatis 后台框架