static void Main(string[] args) { EmployeeList list = new EmployeeList(); Employee fte1, fte2, fte3, pte1, pte2; fte1 = new FulltimeEmployee("张无忌", 3200.00, 45); fte2 = new FulltimeEmployee("杨过", 2000.00, 40); fte3 = new FulltimeEmployee("段誉", 2400.00, 38); pte1 = new ParttimeEmployee("洪七公", 80.00, 20); pte2 = new ParttimeEmployee("郭靖", 60.00, 18); list.AddEmployee(fte1); list.AddEmployee(fte2); list.AddEmployee(fte3); list.AddEmployee(pte1); list.AddEmployee(pte2); Department dep; //读取配置文件 string visitorStr = ConfigurationManager.AppSettings["visitor"]; //反射生成对象 dep = (Department)Assembly.Load("VisitorSample").CreateInstance(visitorStr); list.Accept(dep); Console.Read(); }
//实现人力资源部对全职员工的访问 public override void Visit(FulltimeEmployee employee) { int workTime = employee.WorkTime; Console.WriteLine("正式员工{0}实际工作时间为:{1}小时。", employee.Name, workTime); if (workTime > 40) { Console.WriteLine("正式员工{0}加班时间为:{1}小时。", employee.Name, workTime - 40); } else if (workTime < 40) { Console.WriteLine("正式员工{0}请假时间为:{1}小时。", employee.Name, 40 - workTime); } }
//实现财务部对全职员工的访问 public override void Visit(FulltimeEmployee employee) { int workTime = employee.WorkTime; double weekWage = employee.WeeklyWage; if (workTime > 40) { weekWage = weekWage + (workTime - 40) * 100; } else if (workTime < 40) { weekWage = weekWage - (40 - workTime) * 80; if (weekWage < 0) { weekWage = 0; } } Console.WriteLine("正式员工{0}实际工资为:{1}元。", employee.Name, weekWage); }