OOP设计问题

Mat*_*hew 6 php oop

我在PHP中使用OOP相对较新.它对我的代码的组织和维护有很大的帮助,但我希望能够更好地设计我的类并尽可能高效地使用OOP.我已经阅读了Gang of Four Design Patterns一书,但仍然需要一些帮助.在构建了一些小应用程序后,这是我一直在运行的一件事.

假设我正在构建一个跟踪学校注册信息的应用程序.

我目前接近这个student方法的方法是在一个学生的记录中有一个被调用的类,以及该类中用于CRUD的方法.似乎合乎逻辑的是,我将这个类的构造函数方法student_id作为参数,因此我可以在对象内为所有这些不同的CRUD操作引用它.

但是,随着我继续构建应用程序,我遇到了需要运行返回多个学生的查询的情况.举例来说,像,get_all_students_from_grade($grade),get_dropdown_of_all_students()等等,这些方法并不适用于只是一个学生,所以它似乎很奇怪,我将让他们在我的方法student类,因为我实例化对象的一个student_id考虑.显然我可以通过这种方式使它工作,但似乎我做错了.解决这个问题的最佳方法是什么?

Boz*_*zho 4

student类(这是一个域类)与其上的操作(业务逻辑或数据访问,取决于情况)分开,例如:

  • student- 域对象仅包含数据
  • student_servicestudent_dao(数据访问对象)- 执行操作

有时这被认为破坏了封装,但这是公认的最佳实践。

以下是有关此事的更多信息。从 OOP 的角度来看,它比破坏封装带来了更多的缺点。因此,尽管这似乎是一种公认​​的做法,但它并不完全是 OOP。