在Javascript如何理解单一职责原则

发布于 2022-09-11 22:54:15 字数 134 浏览 25 评论 0

对于函数我能理解一个函数只做一件事;可是对于类的描述就理解不了了,什么叫“每个类都应该有一个单一的功能,一个类应该只有一个发生变化的原因。”如我有个Person类,这个类“发生变化”指什么,名字改变?职业改变?这些我都要新建一个类?请举例说明下个,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等风也等你 2022-09-18 22:54:15

Person (人)
按照常理来说,人(Person)会有很多项技能(Ability),比如 吃饭(Eat) 、 睡觉(Sleep) 、 工作(Work)。这些都是和人(Person) 有关系,但又不是绝对关系的,比如 婴儿(Baby) 和 老人(OldMan),也是属于人,但是他们是不用工作(Work) 的,所以如果你把 (Eat,Sleep,Work),都作为 Person 的方法的话,肯定是不合适的,应该把这些都拆分出来,先定义一个 技能接口或者父类(Ability)

class Ability{
     constructor(Person person){
         this.person = person;
     },
     handle(){
         // TODO
     }
}

然后,分别把(Eat,Sleep,Work)新建一个类并继承或实现技能(Ability),这样就做到了各司其职,代码复用。

但是关于人都有的固定信息,比如你户口本上或者身份证这些信息都是可做为 Person 类的属性。

镜花水月 2022-09-18 22:54:15

可参考这篇文章 如何定义一个类——单一职责原则

这篇文章的意思应该是说
发布消息取消消息可以看做是单一职责,因为这两个动作是属于一个系列的。
而如果这个类里面有转换时间的话,就不是了。因为时间处理跟消息不相关。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文