装饰模式实例复杂的奖金计算

简介: 装饰模式实例复杂的奖金计算

复杂的奖金计算

奖金分类,对于个人有当月奖金、个人累计奖金、个人业务增长奖金、及时回款奖金、限时成交加码奖金等;对于业务主管或者是业务经理,除了个人奖金外,还有团队累积奖金、团队业务增长奖金、团队盈利奖金等。

计算公式也有不同

计算奖金金额的基数也有不同

奖金的计算方式会经常变化。要适于调整和修改
在这里插入图片描述
成员接口

package A;
 
public abstract class Component {
 
public abstract double pay();
 
}

人,两个属性在,职务和姓名

package A;
 
public class Person extends Component {
 
    private String name;
    private String position;
    
    public Person() {
    }
 
    public Person(String name, String position) {
        
        this.name = name;
        this.position = position;
    }
   
    public double pay() {
        System.out.print(position+name+"累计奖金为");
        return 0;
    }
 
}

奖金的装饰类

package A;
 
public class Wage extends Component {
 
    protected Component component;
    public void Decorator(Component component)
    {this.component=component;
 
}
    public double pay()
    {if(component!=null)
        return component.pay();
    else
        return 0;
    }
}

当月奖金,一个属性,奖金数额

package A;
 
public class Month extends Wage {
private double money;
 
public Month() {
    
}
 
public Month(double money) {
    
    this.money = money;
}
 
public double pay()//月奖金
{System.out.print("月奖金 "+money+"元 ");
    return super.pay()+money;
}
}

业务增长奖金,一个 属性,业务增长额,计算公式为业务增长额乘0.2

package A;
 
public class Increase extends Wage{
    private double yewue;
    
    public Increase() {
    
    }
 
    public Increase(double yewue) {
    
        this.yewue = yewue;
    }
 
    public double pay()
    {System.out.print("个人业务增长奖金 "+yewue*0.2+"元 ");
    return super.pay()+yewue*0.2;
    }
}

团队奖金一个属性,奖金额

package A;
 
public class Team extends Wage {
    private double money;
    
public Team() {
        
    }
 
public Team(double money) {
    
        this.money = money;
    }
 
public double pay()
{System.out.print("团队增长奖金"+money+"元 ");
return super.pay()+money;
}
}

团队增长奖金,一个属性,增长值,公式为增长值乘0.5

package A;
 
public class TeamIncrease extends Wage {
    private double zengzhang;
    
public TeamIncrease() {
        
    }
 
public TeamIncrease(double zengzhang) {
        
        this.zengzhang = zengzhang;
    }
 
public double pay()
{System.out.print("团队增长奖金"+zengzhang*0.5+"元 ");
return super.pay()+zengzhang*0.5;
}
}

测试

package A;
 
public class Test {
public static void main(String args[])
{Person xc=new Person("小李","程序员");
Person xd=new Person("老王","团队经理");
Month mo=new Month(3000);
Increase in=new Increase(1500);
mo.Decorator(xc);
in.Decorator(mo);
Team tm=new Team(5000);
TeamIncrease ti=new TeamIncrease(2000);
tm.Decorator(xd);
ti.Decorator(tm);
System.out.println(in.pay()+"元");
System.out.println(ti.pay()+"元");
}
}
目录
相关文章
|
6月前
|
设计模式 Java 关系型数据库
Java设计模式--创建模式工厂--用披萨订购案例 详细讲解三种工厂模式
Java设计模式--创建模式工厂--用披萨订购案例 详细讲解三种工厂模式
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(二)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(二)
36 0
2022年 一月19号复盘内容二。(继承 多态 接口 抽象)(一)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象)(一)
45 0
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(三)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(三)
40 0
|
Serverless C++
【C++之静态数据成员和静态成员函数】计算商品总销售款和平均售价
【C++之静态数据成员和静态成员函数】计算商品总销售款和平均售价
|
设计模式 算法 测试技术
【机房重构】——策略模式+简单工厂计算消费
【机房重构】——策略模式+简单工厂计算消费
97 0
【机房重构】——策略模式+简单工厂计算消费
|
设计模式 算法 JavaScript
从计算年终奖开始,理解策略模式 - 2/14
从计算年终奖开始,理解策略模式 - 2/14
134 0
|
存储 BI C++
C++实验三:类的多态性的实现——工资报表
某公司的员工有经理Manager、技术人员Technicist和营销人员SalsePerson,他们的薪金计算方法如下: 经理按月计酬,方法是:基本工资+奖金;技术人员按月计酬,方法是:基本工资;营销人员按月计酬,方法是:基本工资+销售利润*5%。其中基本工资为8000元再加上工龄工资。工龄工资就是雇员在该公司工作的工龄每增加一年,月工资就增加200元。 每类人员都有职工编号、姓名、性别、入职时间、职位、基本工资等数据;各类人员使用统一接口get_pay()计算各类人员的月薪,重载<<运算符实现
228 0
C++实验三:类的多态性的实现——工资报表
|
设计模式 Java
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(二)
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(二)
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(二)
|
设计模式 Java 关系型数据库
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(一)
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(一)
【Java设计模式】用 披萨订购案例 详细讲解三种工厂模式(一)