采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
比如用户模块,这个包是user 一开始的时候可能只有一些很简单的业务逻辑,但是后期项目做大后,除了业务逻辑增多,还会出现原有的业务逻辑做更新,所以在这种情况时,go语言是只能用这节视频里的扩展来应对吗?
我们在思路上不要想着类似这种派生一个类加个字段的扩展方法。应该是,除了那样的方法,还有很多其它扩展的方法。
就user这个例子本身来说,扩展很可能不是一个好的设计。user是描述用户的数据。就像你说的,业务逻辑增多,怎么办呢,更推荐的做法是让user不要有业务逻辑,每个业务逻辑自己负责去维护自己的参与者结构,逻辑上说这个参与者很可能会有对user的引用,具体代码就是参与者结构体里有一个*User。很自然的,我们就用了这里组合的方式。
其它还有什么方式,我们可以参考一下设计模式相关的知识,有很多组合的模式。
从需求出发而不是先考虑扩展能解决一切问题(的确能解决大部分问题,虽然解决的不太好),然后再去想go语言如何来模拟扩展的思维。
谢谢老师,学习啦。 的确单单的在user这个包里做的话,只会让代码变得更加复杂,是我的思维方式有点不对
謝謝老師的回答, 感覺 Go 拿掉繼承的功能就是想讓結構變得扁平化一些, 不知道這樣理解對嗎?
可以这么说。阅读的人会更容易理解代码。而且即使在java中,也早已不提倡使用继承的做法了。
登录后可查看更多问答,登录/注册
语法+分布式爬虫实战 为转型工程师量身打造
3.7k 14
690 1
2.0k 1
1.1k 12