操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

面向对象设计模式与原则[2]

2007-9-20 网友评论 0 条 点击进入论坛

  从一个示例谈起

  示例场景:

  我们需要设计一个人事管理系统,其中的一个功能是对各种不同类型的员工,计算其当月的工资——不同类型的员工,拥有不同的薪金计算制度。

  结构化做法

  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());

  示例场景:

  现在需求改变了……随着客户公司业务规模的拓展,又出现了更多类型的员工,比如钟点工、计件工……等等,这对人事管理系统提出了挑战——原有的程序必须改变。

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46473 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail