我已经阅读了Head First Java,并且了解OOP的工作原理。这是我的问题:我是一个PHP程序员,虽然我在PHP中使用了OOP,但是在弄清楚应该是什么对象以及给它提供什么方法时遇到了麻烦。
例如,假设我有一个应用程序,允许人们登录和编辑文档。如果只有一个实例,为什么文档应该成为对象?我应该将deleteDocument()
方法赋予文档对象还是admin对象?该文档是要删除的文档,但管理员是执行该操作的文档。
因此,我真正的问题是,从程序背景出发,我如何确定对象应该是什么以及应该使用什么方法?
最佳答案
好在您的示例中,我不确定为什么在您的设计中只有一个文档,但是它仍然应该是一个对象,以防日后您需要多个文档。
至于删除功能,实际上并没有简单的答案。您很可能会在双方身上找到争论。我本人将把较低级别的删除功能(如删除数据库条目之类的东西)放在文档类中,但是其他任何功能都可以放在父级中。如果所有文档均归管理员所有,则管理员应具有DeleteDocument,该DeleteDocument调用文档上的delete,并从数据库中删除所有关联。
通常,从过程出发,如果您发现自己绕过一大堆状态变量或声明了许多全局变量,则可以将该相关功能转换为类。尝试使对象所包含的功能尽可能紧密地相关,否则您的类可能会膨胀而失去控制。