我正在开发一个网络应用程序,用于管理正在医学领域学习的大学生。这些学生中的每一个都需要在大学生涯的某些阶段参加“临床经验”。我正在撰写的网络应用程序旨在帮助大学,诊所(学生们去体验他们的经历),以及学生能够轻松地相互协调。
我正在使用Kohana框架,因此是MVC架构模式。这是我现在构建应用程序的方式。
Controller
|
--------------------------
| |
Public Dashboards
------|------ |
| | |
Login Recover Password |
|
-------------------------------
| | |
Students Universities Clinics
因此,在公共部分,用户可以登录或恢复他们的密码。
用户登录后可以访问仪表板部分,具体取决于用户帐户的类型,他们将拥有学生,大学或诊所仪表板。现在,在三种仪表板类型中,每个仪表板将具有一组不同的控制器,用于用户可以采取的操作。所以上图实际上也代表了控制器的继承性。作为学生仪表板一部分的Controller对其中一个仪表板部分具有以下继承:
Dashboard Section
- > Student Dashboard
- > Dashboard
- > Controller
现在,如果每个不同的仪表板类型的每个Dashboard Section
都是唯一的,那么这一切都很好。同样,只有该特定控制器才需要作为该控制器一部分的所有操作。
然而事实是,一些仪表板类型DO具有共同的控制器。例如,每个仪表板类型都有一个account
控制器。该控制器允许用户管理他们的帐户。问题是,我不想为学生,大学和诊所仪表板下的每个account
控制器编写完全相同的控制器代码。
现在最好的情况是,每个account
控制器不仅可以从其各自的仪表板类型(Student
,University
或Clinic
继承,而且还可以从一个单独的类(可能称为Account_Controller
)继承方法,在那里我为帐户控制器实现适当的操作。
当然PHP缺少多重继承。那么,为了使我的代码非常干燥,在这里实现的正确设计模式是什么?
现在我在名为Dashboard
的{{1}}类中有一个受保护的方法,我只是在每个仪表板类型的account_update
个控制器中调用它。然而,这似乎非常混乱。此外,还有其他情况,仪表板之间常见的控制器将有多个操作。
答案 0 :(得分:0)
我认为你正在寻找通用课程。