向对象编程的精髓在于将行为绑定在数据上。
Russ提供的一句金玉良言:“不要使用‘er’结尾的对象。”
多年以后我发现,面向对象编程的精髓在于将行为绑定在数据上。
就拿某种“装载程序模块”来说吧,重点在于它的工作单元。模块有许多实例变量,参数,也许还有很多到处传输的数据。
如今,取而代之的是LoadRecord和LoadStream。
我有理由相信,你们最终使用的工具,更类似于面向对象编程创始人心中设想的模样。我们想要创造可以描述的对象,然后将某些行为绑定在它上面,而不是将焦点集中在它的行为上,然后弄清楚他们的行为需要哪些数据
某些以前学过的用er结尾的对象已经绝迹多年
管理者(Manager)——每当我遇到一位管理者时,我就会感到担忧。大家没有跟我说它的含义,却早早地告诉我它的职能。它是注册表吗?那就叫它注册表吧。是历史记录还是日志?就那样称呼吧。是工厂吗?就那样称呼吧。
控制器(Controller)——我在过去20年内只做过一个上等的控制器对象,它是一个象征着现实世界对象的BallastVoltageController接口。事实上,世界上每一个简单MVC的执行与控制器的不同作用本应告诉我们这个构想相当协调的事情。
组织者(Organizer以及许多类似的团体)——焦点在于他们的职能。这是一个用来说明让众多这种‘ers’对象转化为组织极其简单的不错例子。就把它们称为组织吧。现在我们来关注它们的内容。
分析器/渲染器/(Analyzer/Renderer)/等等——“劳动者”对象中定义清晰的例子。假设它们是用来分析/渲染/等等。
生成器/加载器/阅读器/编写器/(Builder/Loader/Reader/Writer/)等等——把焦点从被操控的对象身上挪开,它们自身往往承担着重大的责任。
这样一条路线规则也会有很多例外