下午有点空, 抽时间考虑了一下24算法能否用OO的观点来实现.
最初想到的是将+ - * /四种方法用四个FINAL MEMBER PROCEDURE实现,
后来一想直接用OPEN CURSOR FOR SELECT || EXPRESS的方法岂不更好?
遂放弃这一念头. 观察了一下, 发现整个需求中变化的是:
数字或操作符的排列 以及 数字和操作符的组合.
似乎有点靠 策略模式 的谱, 画了一下UML图, 发现可以把 数字或操作符的排列 算法做成一个抽象类,
数字和操作符的组合 做成一个抽象类.
数字或操作符的排列 算法无非两种: 1, 是对数字或操作符全排列;
2, 是先对数字两两排列, 取其操作后的结果再与剩下的数字两两排列,
这个涉及递归, 想想就麻烦
, 故先不实现它, 仅考虑第一种情况, 呵呵
再考虑 数字和操作符的组合, 无非 newkid 在其贴子里列出的五种情况, 这个好办, 一个超类, 五个子类.
下面看具体的实现.
|