【发布时间】:2011-06-18 10:42:22
【问题描述】:
如果Single Responsibility Principle 适用于 OOP 并且 smalltalk(以及 &ruby 也是)被认为是最 OO 语言之一,为什么 Object 类可以响应这么多消息?
来自Object methodDict explore的几个:
- 检查、探索、浏览、打印:打开:
- 接受(所有对象的访客模式?)
- copy、deepCopy、join、joinTo、at:、at: 修改:
- asString、asFunction、asOrderedCollection(为什么不也 asSet?)
- 海边的:asLink、asJson、asJavascript
这不是对象的责任(例如,用户域模型应该只对其私人消息、付款等感兴趣)
编辑:其中一些是有意义的(asString、asOrderedCollection、accept、notify),而另一些看起来很奇怪(at:、asFunction、deepCopy、join、joinTo)
【问题讨论】:
-
哇,我们抱怨 .NET 的 Object 类太大(总共只有 7 个方法)!
-
嘿,Object.new 在 ruby 1.9.2 中有 56 个方法。
-
Seaside(基于pharo smalltalk)图片中
Object methodDict中有370个方法:-) -
好吧,Smalltalk 已经过时了。您为什么认为单一责任原则被发明了?