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

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

复杂的奖金计算

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

计算公式也有不同

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

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

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()+"元");
}
}
目录
相关文章
|
应用服务中间件 Apache Windows
Windows平台及服务器部署安装多个Tomcat服务(详细版)
Windows平台及服务器部署安装多个Tomcat服务(详细版)
791 0
Windows平台及服务器部署安装多个Tomcat服务(详细版)
|
9月前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
369 25
|
机器人 Shell Python
ROS2教程05 ROS2服务
这篇文章是关于ROS2(Robot Operating System 2)服务的教程,涵盖了服务的概念、特性、命令行工具的使用,以及如何编写服务的服务器和客户端代码,并提供了测试服务通信机制的示例。
476 4
ROS2教程05 ROS2服务
|
设计模式 SQL 安全
【编程进阶知识】Java单例模式深度解析:饿汉式与懒汉式实现技巧
本文深入解析了Java单例模式中的饿汉式和懒汉式实现方法,包括它们的特点、实现代码和适用场景。通过静态常量、枚举类、静态代码块等方式实现饿汉式,通过非线程安全、同步方法、同步代码块、双重检查锁定和静态内部类等方式实现懒汉式。文章还对比了各种实现方式的优缺点,帮助读者在实际项目中做出更好的设计决策。
358 0
|
Linux Windows
Centos7安装wps办公软件
Centos7安装wps办公软件
333 0
|
设计模式 uml C语言
设计模式----------工厂模式之简单工厂模式(创建型)
这篇文章详细介绍了简单工厂模式,包括其定义、应用场景、UML类图、通用代码实现、运行结果、实际应用例子,以及如何通过反射机制实现对象创建,从而提高代码的扩展性和维护性。
设计模式----------工厂模式之简单工厂模式(创建型)
|
存储 监控 关系型数据库
MySQL普通表转换为分区表实战指南
MySQL普通表转换为分区表实战指南
|
机器学习/深度学习 人工智能 前端开发
新一代前端开发工具——基于人工智能的代码生成器
【2月更文挑战第2天】本文介绍了一种新型前端开发工具——基于人工智能技术的代码生成器,通过分析用户需求和设计稿,自动生成高质量前端代码,极大地提升了开发效率和质量。
|
Go 索引
Golang深入浅出之-切片(Slices)入门:创建、操作与扩容机制
【4月更文挑战第20天】Go语言中的切片是动态数组,提供灵活的操作和自动扩容。本文介绍了切片的创建(通过`make()`、数组创建和切片字面量)、基本操作(索引访问、切片、赋值追加和遍历)以及扩容机制(首次和后续扩容策略)。此外,还强调了切片与底层数组的关系、切片越界问题、`append()`的使用以及理解切片的关键点,帮助提升Go编程效率和代码质量。
380 0
|
数据采集 Python
利用Pandas对小费数据集进行数据预处理实战(附源码)
利用Pandas对小费数据集进行数据预处理实战(附源码)
430 0