public abstract class Factory{
protected abstract BasePay getBasePay();
protected abstract Assurance getAssurance();
protected abstract Bonus getBonus();
protected abstract Tax getTax();
}
//定义合同工的工厂类
public class ContractFactory extends Factory{
public BasePay getBasePay(){
return new ContractBasePay();
}
public Assurance getAssurance(){
return new ContractAssurance();
}
public Bonus getBonus(){
return new ContractBounts();
}
public Tax getTax(){
return new ContractTax();
}
}
//定义劳务工的工厂类
public class WorkerFactory extends Factory{
public BasePay getBasePay(){
return new WorkerBasePay();
}
public Assurance getAssurance(){
return new WorkerAssurance();
}
public Bonus getBonus(){
return new WorkerBonus();
}
public Tax getTax(){
return new WorkerTax();
}
}
//定义薪资计算的接口
public interface BasePay{
public String getBasePay(String name);
}
//定义合同工薪资计算
public class ContractBasePay implement BasePay{
public String doBasePay(String name){
return name + "基本薪资开始计算"
}
}
//定义劳务工薪资计算
public class WorkerBasePay implement BasePay{
public String doBasePay(String name){
return name + "基本薪资开始计算"
}
}
//定义奖金计算的接口
public interface Bonus{
public String doBonus(String name);
}
//定义合同工奖金计算
public class ContractBonus implement Bonus{
public String doBonus(String name){
return name + "奖金开始计算"
}
}
//定义劳务工奖金计算
public class WorkerBonus implement Bonus{
public String doBonus(String name){
return name + "奖金开始计算"
}
}
//定义保险计算的接口
public interface Assurance{
public String doAssurance(String name);
}
//定义合同工保险计算
public class ContractAssurance implement Assurance{
public String doAssurance(String name){
return name + "保险开始计算"
}
}
//定义劳务工保险计算
public class WorkerAssurance implement Assurance{
public String doAssurance(String name){
return name + "保险开始计算"
}
}
//定义个人所得税计算的接口
public interface Tax{
public String doTax(String name);
}
//定义合同工保险计算
public class ContractTax implement Tax{
public String doTax(String name){
return name + "个人所得税开始计算"
}
}
//定义劳务工保险计算
public class WorkerTax implement Tax{
public String doTax(String name){
return name + "个人所得税开始计算"
}
}
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();
Assurance assurance = factory.getAssurance();
Bonus bonus = factory.getBonus();
Tax tax = factory.getTax();
retrun basepay.doBasePay(name) + "---" + assurance.doAssurance(name) +"---"+
bonus.doBonus() + "---" + tax.doTax();
}
}
public class Client{
public static void main(String[] args){
Director director = new Director();
director.setFactory(new WorkerFactory());
System.out.pritln(director.doSalary("劳务工"));
}
}