您的位置:首页 > 其它

这个“关系”应该加吗?

2014-11-30 20:51 99 查看

概述

在做高校平台这块内容的时候,负责EF的封装,我们几个人在做好相应封装后,为了测试其功能,然后,又做了一个具体系统的一个架构,然后测试我们封装的东西,由于自己需要转到wf那里了,所以,这块内容需要和别人交接一下,在交接的过程中,讲解程序设计上出现了一个分歧,针对于设计上的分歧,本篇博客将围绕着两个问题来阐述这个分歧:为什么要这么设计和为什么不在BaseDal和IBaseDal之间添加一个实现关系。

设计上的分歧

a、设计图




b、右边的设计能实现?

从实现的角度上说能实现,因为我们就是根据右边的设计做出了一个Demo,然后,我们从面相对象的角度讲解右边的图可以实现。

抽象IBaseDAL这个公共接口,然后所有子接口都继承这个接口,那么,所有子接口就拥有了父接口中的所有声明的方法,从而达到不重复写相同代码的功能,实现代码复用的功能,这个也是抽象类的一个重要作用。

UserDAL实现IUserDAL接口,DepDAL实现IDepDAL接口,因为IUserDAL和IDepDAL继承了IBaseDAL,所以,UserDAL和DepDAL里面的具体实现中,一定会用相同方法和功能的代码,此时,我们把这些抽象到BaseDAL中,然后,UserDAL继承BaseDAL,就实现了我们右图设计的产生了,即:右边的设计从实现的角度上说可以实现。

c、为什么不用左边的设计?

为什么不用左边的设计,左边的设计一看就十分的了然了,之所以不用,是因为BaseDAL和IBaseDAL之间几乎不存在那种类型上的关系,仅仅存在的关系是,IBaseDAL中的方法,BaseDAL都实现了,这个丝毫不具有说服力,让我在设计的过程中添加这个实现关系,首先,我们要知道为什么要产生IBaseDAL,就是为了使自己接口不需要写重复性定义的方法了,然后,我们要清楚为什么要产生BaseDAL,同样的道理,是因为UserDAL和DepDAL中有公共功能的实现,所有,为了达到公用的目的才出现的,不是因为有了IBaseDAL,所以,才有了BaseDAL,没有IBaseDAL,BaseDAL仍可以存在,因为所有子类中可能有相同私有方法的存在,再来说,右边的设计对于我们面向对象的理解非常的有帮助,可以帮助我们加深对面向对象的理解。

另一方认为左边的这种方式更好,然后,从后期添加一个公共方法等方面说,这里我仍认为BaseDAL和IBaseDAL之间加了那条实现关系的线后,就不能称得上好的面向对象的设计。

总结

上面的图的两种设计方式,从实现上说都可以实现,我们双发也都认同这个,这个是非常成功的地方,但是,对于采取那种具体设计来说,那真的是仁者见仁,智者见智了,但是,我扔坚持右边的设计。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐