请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,如果在业务上需要对某个包做维护或者延伸的话是只能用这种方式来做吗?

比如用户模块,这个包是user
一开始的时候可能只有一些很简单的业务逻辑,但是后期项目做大后,除了业务逻辑增多,还会出现原有的业务逻辑做更新,所以在这种情况时,go语言是只能用这节视频里的扩展来应对吗?

正在回答 回答被采纳积分+3

1回答

ccmouse 2020-02-25 15:29:15

我们在思路上不要想着类似这种派生一个类加个字段的扩展方法。应该是,除了那样的方法,还有很多其它扩展的方法。

就user这个例子本身来说,扩展很可能不是一个好的设计。user是描述用户的数据。就像你说的,业务逻辑增多,怎么办呢,更推荐的做法是让user不要有业务逻辑,每个业务逻辑自己负责去维护自己的参与者结构,逻辑上说这个参与者很可能会有对user的引用,具体代码就是参与者结构体里有一个*User。很自然的,我们就用了这里组合的方式。

其它还有什么方式,我们可以参考一下设计模式相关的知识,有很多组合的模式。

从需求出发而不是先考虑扩展能解决一切问题(的确能解决大部分问题,虽然解决的不太好),然后再去想go语言如何来模拟扩展的思维。

2 回复 有任何疑惑可以回复我~
  • 提问者 ericdemon #1
    谢谢老师,学习啦。
    的确单单的在user这个包里做的话,只会让代码变得更加复杂,是我的思维方式有点不对
    回复 有任何疑惑可以回复我~ 2020-02-25 15:38:35
  • ZoneTw #2
    謝謝老師的回答,
    感覺 Go 拿掉繼承的功能就是想讓結構變得扁平化一些,
    不知道這樣理解對嗎?
    回复 有任何疑惑可以回复我~ 2020-03-27 22:37:18
  • ccmouse 回复 ZoneTw #3
    可以这么说。阅读的人会更容易理解代码。而且即使在java中,也早已不提倡使用继承的做法了。
    回复 有任何疑惑可以回复我~ 2020-03-28 11:13:31
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信