应用OOP的设计过程演化(二)2011-10-01 博客园 Bēniaǒ在我上篇文章应用OOP的设计过程演化(一) 里,结合了实例通过应用OOP和重构等技术,你已看到代 码是怎样一步一步复活的。让最初死板的代码变得灵活、可扩展,设计的不断演化过程证实,代码一步一 步的复活就如同给一只冻僵翅膀的小鸟带去温暖的阳光一样。上一篇文章虽然算得上是完美的演义了一个应用OOP的设计过程,但缺点也不少,可能因为这样给文章 留下了败笔。那下面我们就来分析下这些不足之出。我们在设计中为什么要不断的抽象,重构?因为最初 的设计不可能是完美的,我们不能一下子就完全把各个对象、类、接口等角色的职责划分得清清楚楚,只 有通过不断的对设计进行修改才能更进一步的分清各个角色的职责。“既然抽象销售业务的基类(Sel)l和租赁业务的基类(Hire)都具有相同的行为,这里我们完全可以在 进一步的抽象,为什么不为这两个类定义一个统一的接口呢?”这是上一篇文章中留下的问题。是的,我 们确实应该这么做:
1/**//// <summary>
2/// 系统总接口
3/// </summary>
4public interface IMoney
5{
6 /**//// <summary>
7 /// 返回本次交易的金额
8 /// </summary>
9 /// <returns></returns>
10 double GetMoney();
11
12 /**//// <summary>
13 /// 执行某项特定操作(销售、出租、归还)
14 /// </summary>
15 /// <returns></returns>
16 string Execute();
17}
此时,我们还需要修改Sell和Hire两个类,让其继承IMoney接口,如下UML图示: