类的接口和面对对象编程的添加复杂度

首先对于第8章的代码,正好写完了一个一模一样的实例。

其中使用了接口和抽象的方法。得到了一个易于修改和添加功能的表达式树的模型。代码上传VS2013;


现在总结一下:

1.首先,对于如果需要使用标志标记的方法实现,必须要严肃的考虑,是不是要利用类的继承来实现。比较两个方法:

如果是标记方法,那么就说明一定有共同点,可以提取共同点,如果是不同点不会影响接口设计,就可以不使用。

如果使用提取的方式,会导致很多不必要的类出现,而且是一次性的,就不用类时限。假象,如果你要实现一个类,但有一个标志,每一次添加一个类型,就需要改变原来的代码,如果是使用类的继承,那么你不需要跳转到那个判断引擎中来,可以直接添加到一个文件中,编译器会实现自动检测。这样的话添加功能不会出错,因为其他的代码完全不用变化,人们可以值专注自己添加的代码。更具miller定理,就可以得到更加快的效率和更加少的bug。这是最大的优点。

2.使用接口的方法,可以使得添加新的功能更加的容易,但是必须要考虑的是根据什么划分不同的类。

这个程序中使用的是节点的元数来获得的不同的继承。那么你添加一个元数相同的就必须要自己到判断引擎中添加代码。但是你可以 更加的利用性质,那么就是把标志符也作为继承因子来构建不同的类,但是这样的话会得到很多的不同的名字的类,要增加用户的记忆能力,折中才是王道。比如要添加一个Exp_muti  , Exp_cheng . 。但是目前的这个使用了句柄,应该不会有问题。

添加复杂度,如果是改变接口的添加,就必须要对所有的派生类都变化。

如果是添加一个继承因子或者是同一阶段继承类,就是只要直接堆砌就好了。

两个复杂度都很小。


附件。Expression , 工程名FirstBlood.代码在这,点击打开链接


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值