- 用工厂设计模式或代理设计模式,实现一个工作查询的程序。工资查询人员一共包含三类:项目经理(Manager)、高级程序员(SeniorProgrammer)、程序员(Programmer)。其中每月基础工资为5000元。高级程序员和项目经理在基础工资的基础上有5000员的绩效工资,同时,每月项目经理有5000元的奖金。
2.在程序1的基础上增加额外加班费的计算,每月约计28天,其中正常工作日为20天,其中8天是公共休息日。输入加班天数(小于等于8天),将总月薪给输出出来。其中加班费:项目经理800元/天,高级程序员500元/天,程序员200员/天。
import java.util. Scanner;
interface Employee{
public void tell();
public int extrasalary(int day);
public void setDay(int day);
}
class Manager implements Employee{
private int day;
public void setDay(int day){
this.day = day;
}
public void tell(){
System.out.println("项目经理总工资为:"+(5000+5000+5000+this.extrasalary(day)));
System.out.println("加班费为:"+this.extrasalary(day));
}
public int extrasalary(int day){
if(day <= 8){
return day * 800;
}
else{
System.out.println("输入错误");
}
return 0;
}
}
class SeniorProgrammer implements Employee{
private int day;
public void setDay(int day){
this.day = day;
}
public void tell(){
System.out.println("高级程序员工资为:"+(5000+5000+this.extrasalary(day)));
System.out.println("加班费为:"+this.extrasalary(day));
}
public int extrasalary(int day){
if(day<=8){
return day * 500;
}
else{
System.out.println("输入错误");
}
return 0;
}
}
class Programmer implements Employee{
private int day;
public void setDay(int day){
this.day = day;
}
public void tell(){
System.out.println("程序员工资为:"+(5000+this.extrasalary(day)));
System.out.println("加班费为:"+this.extrasalary(day));
}
public int extrasalary(int day){
if(day<=8){
return day * 200;
}
else{
System.out.println("输入错误");
}
return 0;
}
}
class Factory{
public static Employee getinstance(String className){
if("Manager".equals(className)){
return new Manager();
}
if("SeniorProgrammer".equals(className)){
return new SeniorProgrammer();
}
if("Programmer".equals(className)){
return new Programmer();
}
return null;
}
}
public class TestDemo{
public static void main(String[] args){
Employee E = Factory.getinstance(args[0]);
Scanner sc = new Scanner(System.in);
System.out.println("请输入加班天数(小于等于8)");
E.setDay(sc.nextInt());
E.tell();
}
}