面向对象里类方法归属问题处理

来源:互联网 发布:html label js 编辑:程序博客网 时间:2024/05/17 21:47

网上一篇文章《十年之后再看“面向对象”》

http://www.cnblogs.com/freeflying/p/7410167.html

里面有讲到:

我举一个例子:现在有两个类,一个用户类(User),一个博客类(Blog),现在有一个发布博客的方法(Publish)。那么,“发布博客”这个方法,究竟是应该放在用户的类里面,还是博客的类里面?即:究竟是User.Publish(Blog)呢,还是Blog.Publish()?

原文作者未说例子给出一个较好的处理方案,并由此例子对面向对象进行了负面的评论。个人认为这块是有待商榷的。

首先我们不能把面向对象简单化了。OO不是简单的把现实的事件来做一个动谓分解。用户发布博客,不能简单的就是一个用户类,然后一个发布的方法。如果这样简单粗暴的话,那OO也就太容易了。

这块个人认为应结合领域驱动来分析问题。用户发布博客应该是business层的一个事件(或者方法)。它应该调用下层相应的领域模型来实现。如博客的状态更新,关注对象的消息通知等。这个发布博客事件可以用一个pipline来实现。而这个 pipline是放在userService还是blogService里,这个根本在面向对象设计时完全可以弱化之(放在userService还是blogService根本不重要,或者放在其中哪一个均可)。


通过对发布博客这个事件的进一步业务分析,设计出更合理的领域模型才应该是OO所关注的重点。

原创粉丝点击