Design patterns 设计系统组织结构表示

Design patterns 设计系统组织结构表示,design-patterns,database-design,data-structures,architecture,structure,Design Patterns,Database Design,Data Structures,Architecture,Structure,我在乞求设计一个系统。 它必须有一个非常灵活的结构来代表整个组织 基本要求很简单: 具有容器(组织单位)的层次结构 容器将包含其他实体(包括其他容器),例如: 可以包含用户的组 日历 等等 此外,还要求根据结构简化许可和注册过程 用户\组可以使用不同的角色\权限注册到其他容器,这将授予他们对所有其他实体使用相同角色的权限,还可以为组和日历定义管理器 最初的想法: 使用“复合”设计模式表示实体: [[Interface]]属性-->整数ID,字符串名称 每个实体将实现相同的接口 容器实体

我在乞求设计一个系统。 它必须有一个非常灵活的结构来代表整个组织

基本要求很简单:

  • 具有容器(组织单位)的层次结构
  • 容器将包含其他实体(包括其他容器),例如:
    • 可以包含用户的组
    • 日历
    • 等等
  • 此外,还要求根据结构简化许可和注册过程
  • 用户\组可以使用不同的角色\权限注册到其他容器,这将授予他们对所有其他实体使用相同角色的权限,还可以为组和日历定义管理器

  • 最初的想法:

  • 使用“复合”设计模式表示实体:
    • [[Interface]]属性-->整数ID,字符串名称
  • 每个实体将实现相同的接口
  • 容器实体将包含引用这些实体的子对象列表
  • 每个实体将持有一个“权限树”,该树将在页面上持有用户列表,该树将表示用户作为管理者注册到实体的角色和方式。i、 e.如果用户通过组注册为所有者,则树将显示:所有者-->组1-->用户1
  • 沉思:

  • 每个实体都应该有自己的Delete\Add方法吗?在接口级别定义,或者如果存在不同的类(某种类型的“EntitiesManager”),将处理添加、编辑和删除实体的所有任务
  • 我应该如何对数据库建模以保存权限树信息
  • 我很高兴听到关于这个话题的任何想法、更正、经验教训或建议


    提前感谢…

    您的深思熟虑,我建议您:

  • 假设你现在不知道所有的实体,他们可能已经知道了 非常不同的结构,您应该更好地封装 在实体类中创建/删除。具有更普通的超类 使用默认实现将是一个好主意
  • 关于权限树。您已经完成了模型的实体吗 这对于您的案例来说,最好的方法是自上而下的,它更简单 当您 已经有了:)

  • 谢谢只是想看看我是否明白。。。建议使用特定实体类使用CRUD操作。因此,如果我想添加另一个容器,它将类似于:MyContainer.add(),这将把它添加到数据库中。我想使用一个域管理器类作为一个门面,可以帮助我创建实体,例如DomainManager.AddEntity(实体,父实体)。是的。如果CRUD逻辑对所有实体都是完全直接的,那么这种方法是最好的。但是让我们考虑当你有50个具有非常特定的CRUD逻辑的不同实体时。我不是说可以在数据库级别实现的级联删除。我的意思是“请为这个新用户创建默认权限集”。您的DomainManager类将被炸毁。另一方面,在使用实体的典型操作期间,您将始终能够轻松访问CRUD逻辑,而无需获取DomainManager实例。