对象建模应该如何确定对象有哪些方法?

07-03-09 wlmouse
最近正在自学建模。打算以设计一个论坛做为目标。初步确定了论坛中有用户、管理员、论坛、帖子等对象。我想问一下,像添加帖子这种功能是否应该属于哪个对象?是应该放在用户对象还是帖子对象中?还有,像注册用户、消息的发送管理这些功能是应该独立出来成为一个服务还是放到用户对象中去?

思考来思考去,感觉一脑袋浆糊。而且感觉几乎所有的方法都跑到用户、管理员这两个对象中去了。是否吧对象设计的太大了?到底应该如何确定功能应该放到那个对象中去呀。

还有就是对象持久化。程序结构上我想参考JIVE的代理模式,但是带来一个问题。我打算在论坛中使用Spring之类的IOC管理类的创建。比如用户对象,有一个User接口,一个ProxyUser做为代理。实际工作的是一个DBUser类(先这么叫吧。这个类用ORM工具持久化到数据库)。从数据库中取出的是DBUser,用户要操作ProxyUser。我应该怎么做?new一个ProxyUser然后把DBUser放到ProxyUser里头,最后返回ProxyUser?感觉把ProxyUser写死了,我应该怎么写?用一个ProxyUser的工厂类处理?还是用IOC?感觉这里用BeanFactory得到ProxyUser的话,框架侵入程序太厉害。用工厂方式也觉得不太对劲。

说了这么多,自己也不知道有没有把意思表示清楚。这种设计思想方面的东西,我总是有点说不清楚。请大家多多帮忙。

wlmouse
2007-03-12 09:13
昏,没人理我吗?

Coolyu0916
2007-03-12 09:33
jive,你看看吧

这个论坛就是最好的设计模式

有源代码下载

banq
2007-03-12 09:49
你的问题好像很简单,其实包含很多领域知识在里面,我一个个帮你分析一下:

>感觉几乎所有的方法都跑到用户、管理员这两个对象中去了。是否吧对象设计的太大了

这说明你的分析方法不正确,或者说没有掌握OOA分析方法,我们说对象建模很容易,符合日常生活习惯,而日常生活习惯都是靠不同角色的人去做什么事情,如果按照这种太朴素的分析方法去思考,当然会将所有行为都划分到角色对象去了。

必须明白角色定义,角色也是一个模型,虚幻的概念,只有具备一定权限才成为角色,因此,用户和管理员这些称谓其实是角色概念,角色在计算机领域运行需要和具体权限动态结合,才具有意义。

角色和具体功能可以分离再结合,不能一开始就连接在一起,否则扩展就麻烦了,因此,之前将所有行为放在角色中,就不行了。

另外,在你脑海里要有两个世界概念,一个客观世界,就是你的论坛,一个是生活在计算机领域里的世界,现在你要发挥类似绘画的功能,在计算机领域这个空白世界里,画上代表客观世界的图形符号,这些就是模型。

既然角色和具体功能可以分离,当我们进行业务分析时,可以暂时抛开角色因素,进行两个世界的映射,而跨越这两个世界的上帝就是人,角色,采取这种分析方法比较自然和有效。

再细分就要研究Evans DDD和OO设计一些概念了。

>用一个ProxyUser的工厂类处理?还是用IOC?

当然是使用IOC返回一个ProxyUser,ProxyUser是在spring的配置文件中配置的,可以动态扩展。

我有一篇分析jive和spring的文章。

http://www.jdon.com/AOPdesign/spring.htm

猜你喜欢