举个例子
ABCDEFG七个类,ABC是一种点,DE是一种线,FG是面
BaseDao,save方法需要更新坐标,大家都知道,更新点类的坐标,线类的坐标,面类的坐标,方法坑定是大不相同的。
下面问题来了,两种方式:
1. 在save方法中,用instanceof判断是点线面,用不同的方法处理。
2. 点Dao,线Dao,面Dao,继承baseDao重写save方法
从oo的角度来说,肯定是2更符合规范,但是显然1要简单的多
大家有什么想法么?
ABCDEFG七个类,ABC是一种点,DE是一种线,FG是面
BaseDao,save方法需要更新坐标,大家都知道,更新点类的坐标,线类的坐标,面类的坐标,方法坑定是大不相同的。
下面问题来了,两种方式:
1. 在save方法中,用instanceof判断是点线面,用不同的方法处理。
2. 点Dao,线Dao,面Dao,继承baseDao重写save方法
从oo的角度来说,肯定是2更符合规范,但是显然1要简单的多
大家有什么想法么?
支持。 应该是 一个DAO接口。 点DaoImpl,线DaoImpl,面DaoImpl
详细可以百度一下:使用策略模式代替switch语句。
相当于在多种不同的状态下的切换!
当DAO类多了,不同的DAO只是相当于一个策略,不同策略之间互不干扰,可以方便修改和添加!
如果需要多加一个面DAO,只需要重新定义一个类就可以了,原来的代码都不用修改,来实灵活的组合!
不过看起来方法2好一些,我个人也侵向方法2,但是,目测好像用方法1已经出问题了。
线类继承点类,面类继承线类Point => Line => Plane各concrete dao中也就可以用带参的统一接口 save(Point p)