OOP:应该将多少程序逻辑作为方法封装在相关对象/类中?

标签 oop class object methods

我有一个简单的程序,可以有管理员用户或普通用户。 该程序还有两个类:UserAccount 和 AdminAccount。 管理员需要做的事情(用例)包括 Add_Account、Remove_Account 等。

我的问题是,我是否应该尝试将这些用例封装到对象中?

只有使用 AdminAccount 登录的管理员才能添加和删除其他帐户。我可以有一个无类子过程,它向系统添加新的 UserAccount 对象,并在管理员按下“添加帐户”按钮时调用。或者,我可以将该过程作为方法放在 AdminAccount 对象中,并让按钮事件执行一些代码,例如“Admin.AddUser(name, password)”。

我更倾向于第一个选项,但我不确定这个 OO 业务应该走多远。

最佳答案

对象中应该有多少逻辑?

全部。

面向对象 101 会说您应该有一个 Account 类。 User 和 Admin 是可能赋予彼此不同权力的角色,但在系统中添加和删除帐户的行为不应改变。

您的对象表达的使用超出了用户看到的界面,这也应该是正确的。您的用例对于文本或图形用户界面应该是可执行的。这是一个很好的测试,可以了解您将用户界面与逻辑分离的程度,首先看看您是否可以在没有 GUI 的情况下解决问题。

如果您首先考虑 GUI,那您就错了。

关于OOP:应该将多少程序逻辑作为方法封装在相关对象/类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2549962/

相关文章:

javascript - JS中如何避免绑定(bind)对象?

perl - 为什么我的方法打印 "isObjectName=SCALAR(0x1289df0)"?

.NET "Global"变量;哪一个是更好的做法?

javascript - 为什么无法从原型(prototype)更改构造函数?

ios - 在不调用 ViewDidLoad 的情况下从另一个类访问方法或属性?

PHP:如何从别名中获取完全限定的类名?

java - 将 ArrayList 对象移动到另一个类

javascript - 将属于对象的匿名方法作为参数传递 - Javascript

java - 以编程方式将新类添加到项目中

arrays - 如何快速创建对象数组?