我有一个基本用户类,负责操作基本用户信息:名称,年龄,位置等.我想用组功能扩展我的系统,稍后用项目和会议扩展我的系统.例如:
class User
{
public function getName() {
...
}
public function getAge() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用组功能扩展它:
class GroupableUser extends User
{
public function join($groupId) {
...
}
public function leave($groupId) {
}
public function requestGroupInvitation($groupId) {
...
}
public function acceptGroupInvitation($groupId) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
GroupableUser这个名字对我来说似乎很奇怪,但是将连接和离开方法添加到Group类是没有意义的,因为它的用户加入并离开了一个组,而不是相反.
后来我会有像UserThatCanHaveProjects和UserThatCanParticipateInMeetings这样的课程.如何命名这些类?
你通常如何处理这些情况?
您似乎无法找到命名类的方法,因为层次结构不是很自然.实际上,用户可以参与多个组,并且每个组可以具有多个用户.但是,用户可以在没有组的情况下存在,而不存在没有用户的组.我想说这意味着用户应该是一个团队的成员,addUser并且removeUser应该被安置Group.为什么?因为用户可能甚至不"知道"他可以加入或离开组并且非常高兴,而不存在不"知道"用户可以加入它的组.