使用继承和使用组合的一个例子

需求如下:

      实现对帐功能(两个平台用来保持数据一致性的一个方法)。有两种方式,一种是已经有完整的对帐记录,可直接拿来对帐,另一种只提供一个关键字,对帐之前需要先根据该关键字查询以获得对帐记录。

      对帐功能在现有系统中已有两个版本的实现了:一种是定时对帐,另一种是手工填写信息进行对帐。这两种可归纳为同一种类型(即有现成的对帐记录了,直接对帐处理即可),但由于历史原因(不同的人开发的,为了简单的复用代码,第二个人拷贝的前一个人的代码),两个功能几90%的代码是一致的。

      本次新加的两个功能,提供另外两种对帐方式,只填写对帐关键字,其它的信息需要在对帐的时候再临时去查询获得,考虑到以前的两个功能,于是对原有代码进行重构。初步考虑了如下两种实现方式:

      1、提供对帐操作的抽象类,其中的对帐方法实现对帐的整个逻辑,包括参数校验、对帐、日志记录;并有一个抽象方法,获取对帐记录,由子类实现。然后两个子类继承该抽象类,分别实现根据现成的对帐记录对帐和根据关键字进行对帐操作。

      2、提供对帐操作的类,其中的对帐方法实现对帐的整个逻辑,包括参数校验、对帐、日志记录;另外抽象出一个获取对帐记录的接口,提供两种实现,一种根据关键字查询获取对帐记录,另一种根据现有的对帐记录直接构造。对帐类中有一个获取对帐记录的实现类的一个引用,对帐操作时调用相应的方法获即可获得对帐记录。

 

     第一种即为模版方法,第二种即为策略模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值