老师,如果在业务上需要对某个包做维护或者延伸的话是只能用这种方式来做吗?
来源:4-3 扩展已有类型

ericdemon
2020-02-23
比如用户模块,这个包是user
一开始的时候可能只有一些很简单的业务逻辑,但是后期项目做大后,除了业务逻辑增多,还会出现原有的业务逻辑做更新,所以在这种情况时,go语言是只能用这节视频里的扩展来应对吗?
写回答
1回答
-
ccmouse
2020-02-25
我们在思路上不要想着类似这种派生一个类加个字段的扩展方法。应该是,除了那样的方法,还有很多其它扩展的方法。
就user这个例子本身来说,扩展很可能不是一个好的设计。user是描述用户的数据。就像你说的,业务逻辑增多,怎么办呢,更推荐的做法是让user不要有业务逻辑,每个业务逻辑自己负责去维护自己的参与者结构,逻辑上说这个参与者很可能会有对user的引用,具体代码就是参与者结构体里有一个*User。很自然的,我们就用了这里组合的方式。
其它还有什么方式,我们可以参考一下设计模式相关的知识,有很多组合的模式。
从需求出发而不是先考虑扩展能解决一切问题(的确能解决大部分问题,虽然解决的不太好),然后再去想go语言如何来模拟扩展的思维。
262020-04-01
相似问题