社区
基础编程
帖子详情
对于OOP的方法归属有点疑惑.高手指教一下吧
maskdata
2011-02-23 10:13:46
比如某个论坛程序如果采用OOP方式进行设计
在创建类库的时候.有一个user类(用户类)和一个topic类(话题类)
然后有一个新增话题的方法(fn).那么这个fn应该属于哪个类呢?
用户可以增加帖子.而帖子可以被用户增加.
所以这个方法是应该属于user类中的一个方法.还是topic类中的一个方法呢?
因为用户类内可能有注册和登录方法.而话题类可能有获取话题列表和话题详情的方法
就是这种涉及2个对象关系的方法总是有点迷惑
...全文
221
6
打赏
收藏
对于OOP的方法归属有点疑惑.高手指教一下吧
比如某个论坛程序如果采用OOP方式进行设计 在创建类库的时候.有一个user类(用户类)和一个topic类(话题类) 然后有一个新增话题的方法(fn).那么这个fn应该属于哪个类呢? 用户可以增加帖子.而帖子可以被用户增加. 所以这个方法是应该属于user类中的一个方法.还是topic类中的一个方法呢? 因为用户类内可能有注册和登录方法.而话题类可能有获取话题列表和话题详情的方法 就是这种涉及2个对象关系的方法总是有点迷惑
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SICTXK
2011-02-24
打赏
举报
回复
可以拿出来写,两个都不放。哪里需要时requrie一下。
helloyou0
2011-02-24
打赏
举报
回复
[Quote=引用 3 楼 maquan 的回复:]
一个简短的回答:都行。
稍微长一点的回答:这事儿没有一定之规。
^_^
如果你的 user / topic 这两个类是指实体类(类似于 EJB 里 EntityBean 的概念),那其实用哪个都不合适。如果是指工具类(类似于 EJB 里 SessionBean 的概念),用哪个都可以,甚至可以专门构建一个。真正要追求的目标是“解耦”,代码之间尽量减少复杂的、交叉的依赖引用。
[/Quote]
同意,
首先: 都行 :)
其次: 可以设想一下放在不同地方的后果:
尽量让代码更易于理解,
更少的code, 更少的参数,
更少的对其它对象的引用
maquan
2011-02-23
打赏
举报
回复
一个简短的回答:都行。
稍微长一点的回答:这事儿没有一定之规。
^_^
如果你的 user / topic 这两个类是指实体类(类似于 EJB 里 EntityBean 的概念),那其实用哪个都不合适。如果是指工具类(类似于 EJB 里 SessionBean 的概念),用哪个都可以,甚至可以专门构建一个。真正要追求的目标是“解耦”,代码之间尽量减少复杂的、交叉的依赖引用。
张吉Jerry
2011-02-23
打赏
举报
回复
user类用来操纵用户,如添加用户、修改用户信息;
topic类用来操纵话题,在addTopic()的时候将user类当做参数传进去就行。
程序猿之殇
2011-02-23
打赏
举报
回复
单纯的应该放到topic类里
用户类里如果有涉及添加话题的操作,直接调用$topic->fn()就可以了
18_祖传代码的
OOP
重构实战 —— 从 “面条代码” 到模块化架构的三步改造法
本文针对嵌入式开发中常见的‘面条代码’问题,提出基于C语言的面向对象三步重构法:首先封装数据与函数,消除全局变量污染;其次划分模块边界,实现高内聚低耦合;最后通过结构体与函数指针接入轻量级
OOP
框架,提升可扩展性。以储能PCS控制程序为例,在TI C2000 DSP平台上完成实战验证,显著提高代码可维护性和系统稳定性。
C ++语言常见问题解答
本文介绍C++编程语言的基础概念,包括其起源、特点以及如何学习。涵盖了面向对象编程(
OOP
)的基本理念,解答了一些常见问题,如是否需要预先了解其他编程语言、C++的版权
归属
等。
Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
本文分享了一次在手机查询
归属
地小程序开发中遇到的耗时操作导致主线程阻塞的问题,并提供了两种解决方案:在AndroidManifest.xml中修改uses-sdk和将耗时操作移至子线程。通过案例分析,强调了避免在主线程执行耗时操作的重要性。
Handler机制
本文深入解析Handler的工作流程,包括消息入队、消息循环与消息处理。重点探讨为什么子线程不能直接创建Handler,一个线程为何只能有一个L
oop
er,以及如何在不同线程间使用Handler进行通信。同时,文章指出L
oop
er的无限循环过程以及Handler如何分发消息。
彻底搞懂:前端MVVM、后端MVC、DDD极致面向对象的区别与落地真相
本文深入解析前后端架构核心差异:前端MVVM通过ViewModel实现UI与数据的双向绑定,适合交互式场景;而后端采用MVC模式处理请求-响应模型。文章指出传统MVC架构导致贫血模型和过程式编程的问题,提出通过DDD领域驱动设计重构后端架构,将业务逻辑回归领域对象,实现真正的面向对象编程。同时对比了传统Service与DDD中Repository、DomainService的本质区别,强调领域模型应保持纯净,并通过领域事件解决持久化难题。最后总结三种架构的适用场景:MVVM适合前端交互,MVC适合团队协作,
基础编程
21,889
社区成员
140,337
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章