您的位置:首页 > 编程语言

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

2016-11-14 19:56 260 查看
首先对于第8章的代码,正好写完了一个一模一样的实例。

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

现在总结一下:

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

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

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

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

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

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

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

两个复杂度都很小。

附件。Expression , 工程名FirstBlood.代码在这,点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐