学习OOP设计

wai*_*933 10 oop

我读过Head First Java,我理解OOP是如何工作的.这是我的问题:我是一名PHP程序员,虽然我在PHP中使用了OOP,但我很难弄清楚应该是什么对象以及提供它的方法.

例如,假设我有一个允许人们登录和编辑文档的应用程序.如果只有一个实例,为什么文档应该是一个对象?我应该将deleteDocument()方法提供给文档对象还是管理对象?该文档是被删除的文档,但管理员是执行该操作的文档.

所以我真正的问题是,来自程序背景,我如何弄清楚应该是什么对象以及应该有什么方法?

Tes*_*rex 5

在您的示例中,我不确定为什么在您的设计中只有一个文档,但它仍然应该是一个对象以防以后需要多个文档.

就删除功能而言,实际上没有直截了当的答案; 你可能会发现双方的争论.我自己,我会在文档类中放置较低级别的删除功能(比如删除数据库条目),但任何其他功能都可以放在父级中.如果所有文档都归管理员所有,则管理员应该有一个DeleteDocument,它在文档上调用delete,并且还会删除数据库中的所有关联.

一般来说,来自程序,如果你发现自己传递大量的状态变量或声明大量的全局变量,那么将相关的功能转换为类.尽量保持对象包含的功能尽可能密切相关,否则您可能会发现您的类膨胀失控.