【发布时间】:2018-06-11 15:14:28
【问题描述】:
我的设计问题如下。
我有两个类,每个类都有一些子类。我有一个工厂,它需要根据每个对象的子类创建一个对象。
这是一个身份验证问题。工厂根据人员类型和他们希望访问的资源类型生成规则对象。该规则具有 alwaysAllow、NeverAllow 和 timeBasedAllow 子类。如果将来需要更复杂的访问系统,则可能会更多。
因此,理想情况下,未来可以创建一个带有新子类的新人,一个带有新子类的新资源。确定访问权限的参数可以通过新的规则子类进行更改,并且可以在规则工厂内更改每个人员类型和房间类型的特定访问权限。
到目前为止,我能想到的唯一方法是在子类中进行枚举,这与这一点相悖,因为添加一个新的人或房间需要一个新的类和一个看起来很混乱的枚举类的变化.
我也非常热衷于将数据和逻辑分开,所以我不能只将身份验证方法移到 person 类中,因为这需要 person 类知道有多少房间类型,这绝对不理想.
我可能正在追求一些实际上无法实现的事情,但我不禁感到有一个很好的干净的解决方案就在我的掌握之外。
任何帮助将不胜感激。
【问题讨论】:
标签: java oop design-patterns polymorphism class-design