我有一个数据库,人们可能同时是员工,客户和公司成员。我的管理系统允许我在独立页面上编辑Person
,Employee
,Customer
和Member
对象的属性。
现在,我希望能够调用Person
,但能够在同一页面上查看和编辑其员工,客户和成员属性。为这个场景创建一个视图是微不足道的,但我想用正确的基类,继承,组合和聚合等规范来正确地完成它。
我确实理解员工,客户和成员离不开这个人,所以对于我的管理页面,我想我应该创建一个composition的新课程UberDude
人员,员工,客户和会员类别。我还想将这个新课程作为集合的一部分,以便我可以绘制一个包含所有人员的表格,看他们是员工,客户还是成员。有些东西似乎不对,我无法解决类结构的代码。有什么想法吗?
答案 0 :(得分:0)
听起来像是继承问题。您有Person
,但之后可以使用Employee
或Customer
等更具体的字词来描述该人。
通常在面向对象的编程中,从基类开始(在本例中为Person
),然后在扩展子类中添加属性。因此,Person
可能有一个名称,Employee
可能会有一个员工编号,但如果他们是Customer
则不会有意义。
你可以做的是实现装饰器模式,并继续在Person
类上构建。我不确定您当前是如何在当前应用程序中构建人员的个人资料的,但在伪代码中看起来如下:
<?php
$id = intval($_GET['person_id']);
$employee = new Employee(new Person($id));
这将实例化您的Person
类,然后将其传递给您的Employee
类,以使用特定于员工的其他属性和方法进行修饰。