这种模式如果不用面向对象的思想的话,也就是
case Type of
1:doCreditCardPayment();
2:doCheckPayment()
end;
然后在doCreditCardPayment中复制一段其它支付方式的代码拷到这个过程中,就搞定了!
但以后如果需要新增加一种付款方式的话,您必须要打开程序,添加某过程,编译。然后进行整体业务流程的测试。
往往程序员在修改主系统时会很头痛的,说不定改了哪部分会导致整体程序出问题。
基于上述原因,我们在想,能不能在不修改主系统的前提下加上这个功能?
我们一般是这样做:
1.先在主系统做一个基类,类似于下述的TPayment,把付款业务的共同代码出来
2.我们就要开发子模块(使用BPL,对于为什么不用DLL,前面有BLOG讲述,在此不再详述),在BPL中uses 主系统的单元,向下继承着写就行了,这样就有点插件的感觉了。
3.当处理到某订单时,可根据订单的付款类型的字符串创建对象,并调用处理方法。
下面程序并未将子类分离至Bpl中,不过应该是很简单的!
这里以TForm类做为TestUnit来测试!