|
进销存软件之OO设计--中间层处理(二)(2) procedure TSaleBillobj.PrepareProcess; begin 。。。。 FBizProvider:=TBizProvider.Create(Self,Self); 。。。。 end; procedure TSaleBillobj.MoneyProcess; begin with FBizProvider do //调用TbizProvider提供的一系列功能 begin BankProcess(1); ArApForSale; SaleCost; SaleIncome; StockGoods; end; end; 以上TbizProvider的Create中第二个参数为TbaseBillObj类型的对象,而传入的实际为它的子类型(TSaleBillobj)对象实例(self),结合这样的处理方法正好也是OO中对多态的使用。(Overload那个Create与多态没有关系),这样一来,在TbizProvider内部只知道有一个要被提供服务的’单据’(TbaseBillobj)就行了,具体是哪个单据(TxxxBillobj)不用知道,在TbizProvider的实现程序里使用那个FbizObj就可以了。 最后再看一下图4,可以看到各业务单据子类与TbizProvider建立了关联,这个关联是基于FbizProvider的。(图4是用ModelMaker反向工程出来的)。 曹春鹏 2004-02
|