这是一个值得长期思考的话题(Java,C++开发者应该比我们理解的更深刻)
这段时间做了一个需求,2个模型(模型A:175个字段,模型B:100个字段).其中B里模型大部分字段的逻辑与A的相同,为了方便以后运维,大家希望尽量写在一个地方。发生修改时候,只需要修改一个地方即可。我做了一个base class,然后两个sub class 继续那个base class。
- base class:负责公共部分逻辑的代码
- sub class:负责各自特殊逻辑
但是有几个场景:
- 两个模型逻辑完全不同
1.1 完全特有的逻辑:通过定义private method处理
1.2 目的含义一样,逻辑不同: interface来实施或者abstract(哪个更好呢?) —Paul Hardy更喜欢interface,但在这里我自己感觉abstract更适合,以后用oo写多了,说不定能理解其中的差异。
–2023/03/09 今天看了一些关于abstract 和interface的区别:
I. abstract是为了子类和继承类而做
II. interface 是为了外部调用(飞机和鸟都能飞行,但是他不是同类,这个例子蛮好的,让人容易理解)
—综上,我调整了这3个类,将目的一样逻辑有差异的用abstract,然后在子类中做实施 - 两个模型逻辑完全相同
通过base class实施来完成 - 两个模型逻辑部分相同
公共逻辑还是在base class来完成,不同部分通过sub class redefine来实施