Oop 在设计类时,如何处理子类型?
我正在学习面向对象设计,这是我的第一个真实的,尽管是个人的项目 我正处于构建用户对象的阶段。我有4个用户子类型:Oop 在设计类时,如何处理子类型?,oop,architecture,Oop,Architecture,我正在学习面向对象设计,这是我的第一个真实的,尽管是个人的项目 我正处于构建用户对象的阶段。我有4个用户子类型: 根管理员-网站管理员、网站所有者 组管理员-具有成员资格和页面的组的组长(例如乐队经理) 组成员-可以作为组成员在页面上查看、发布和评论并查看私人内容的用户(例如,乐队成员) 非关联用户-整个网站的成员,可以公开查看和评论(如fan) 所有组管理员都将是组成员,所有组成员也将是非关联用户。所以基本上它是一个简单的用户权限层次结构 话虽如此,我该如何着手建立与这些级别相关的类架构?有筑
话虽如此,我该如何着手建立与这些级别相关的类架构?有筑巢技术吗?我只是努力在这里搭建脚手架。我已经写出了我的用例和叙述。所以您正在实施基于角色的访问控制。每个用户有四个角色中的一个。因此,用户是一个对象,用户的角色是用户对象中的属性之一
enum roles {
root_admin,
group_admin,
group_member,
unassociated_user
}
class user {
string id;
roles role;
}
接下来,您需要强制执行允许特定角色的用户执行特定活动的业务规则
从一个简单的解决方案开始(这始终是一个好策略):
并实现一个函数或类,其任务是说明给定角色是否允许某个活动
class role_based_access_control {
private:
permissions perm;
public:
bool is_permitted(activities a, roles r) {
return perm[r].contain(a);
}
}
然后,在代码中实现不同活动的地方,包括对该函数的调用:
void add_comment_to_page(user u, comment c, page p) {
if (!role_base_access_control.is_permitted(add_comment,u.role))
throw "access_forbidden";
...
}
重要的是保持基于角色的访问控制规则是集中式的,以便它们是可见的,易于监视和审计。
在这种情况下,您应该考虑使用构造函数而不是子类型/继承。我正在阅读构图,发现PHP只接受一个父节点。有办法吗?我误解了我所读的内容。这对我来说太复杂了。就我而言,这可能有效。但我正在读一篇关于为什么构图不好的文章,我想我正在进入一个复杂的方法论,还没有准备好lol。。。我想从一开始就把它学好,但现在我已经想得太多了。这很简单。非常感谢您抽出时间写下这篇文章。我能够在几秒钟内实现这一点,这让我对这个过程有了更好的理解。问题,这种方法是否存在安全问题?我很高兴能提供帮助。始终存在安全问题,但安全审查通常会涉及超出本讨论范围的系统的其他层,例如用户如何进行身份验证、通信是否加密、谁有权访问哪些服务器。在任何情况下,了解RBAC的优缺点都是很好的。您可以将其与ABAC进行对比(请参阅)。我可能应该重复一下,我是用PHP编写的,这里给出的答案是关于C的。我最初用PHP对其进行了标记,但因为我可以轻松地将其转置,所以在移除标记之前,我没有考虑断开连接。PHP中没有Emum声明,我必须编写一个小的基本枚举类来扩展。如果您能够添加扩展,那么可以使用SPLenum。无论如何,这种体系结构适用于任何语言,但实现可能需要一些变通方法,就像我的例子一样。void add_comment_to_page(user u, comment c, page p) {
if (!role_base_access_control.is_permitted(add_comment,u.role))
throw "access_forbidden";
...
}