| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
面向对象设计模式与原则[2]从一个示例谈起 示例场景: 我们需要设计一个人事管理系统,其中的一个功能是对各种不同类型的员工,计算其当月的工资——不同类型的员工,拥有不同的薪金计算制度。 结构化做法 1.获得人事系统中所有可能的员工类型 2.根据不同的员工类型所对应的不同的薪金制度,计算其工资 enumEmployeeType { Engineer; Sales; Manager; … } // 计算工资程序 if ( type == EmployeeType.Engineer) { …… } else if (type == Employeetype.Sales) { …… } 面向对象设计 1.根据不同的员工类型设计不同的类,并使这些类继承自一个Employee抽象类,其中有一个抽象方法GetSalary。 2.在各个不同的员工类中,根据自己的薪金制度,重写(override)GetSalary方法。 abstract class Employee { … public abstract int GetSalary(); } class Engineer: Employee { … public override int GetSalary() { … } } class Sales: Employee { … public override int GetSalary() { … } } // 显示工资程序 Employee e = emFactory.GetEmployee(id); MessageBox.Show( e.GetSalary()); 示例场景: 现在需求改变了……随着客户公司业务规模的拓展,又出现了更多类型的员工,比如钟点工、计件工……等等,这对人事管理系统提出了挑战——原有的程序必须改变。
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||