这个“关系”应该加吗?

概述

       在做高校平台这块内容的时候,负责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之间加了那条实现关系的线后,就不能称得上好的面向对象的设计。


总结

       上面的图的两种设计方式,从实现上说都可以实现,我们双发也都认同这个,这个是非常成功的地方,但是,对于采取那种具体设计来说,那真的是仁者见仁,智者见智了,但是,我扔坚持右边的设计。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值