Algorithm 对于来自不同、冲突、优先级不同的来源的物业,是否存在设计模式?
我有一组对象的属性,它们的值大部分是布尔值,但它们来自不同的源,不同的源相互覆盖 例如,为了确定用户是否可以使用功能X,我有以下信息来源:Algorithm 对于来自不同、冲突、优先级不同的来源的物业,是否存在设计模式?,algorithm,design-patterns,data-structures,dsl,Algorithm,Design Patterns,Data Structures,Dsl,我有一组对象的属性,它们的值大部分是布尔值,但它们来自不同的源,不同的源相互覆盖 例如,为了确定用户是否可以使用功能X,我有以下信息来源: 功能的默认值,如“功能X在默认情况下可用” 用户帐户类型,如“帐户类型为“业务”的用户可以使用功能X” 国家/地区,如“功能X在您的国家/地区不可用” 按用户覆盖,例如,“功能X可用于此用户,因为他很酷” 对于不同的功能,源列表、它们的顺序及其对默认值的影响不同,例如,无法为单个用户覆盖功能Y,国家/地区源具有优先权 也许我太拘泥于当前的实现,如下所示:
- 功能的默认值,如“功能X在默认情况下可用”
- 用户帐户类型,如“帐户类型为“业务”的用户可以使用功能X”
- 国家/地区,如“功能X在您的国家/地区不可用”
- 按用户覆盖,例如,“功能X可用于此用户,因为他很酷”
- 每个特征由类特征中的常数标识
- 有一个具有默认值的数组(功能X->默认值不可用)
- 每个帐户类型都有数组(业务帐户:功能X->可用,功能Y->……)
- 所有其他源代码都有一个很长很长的函数,包含大量的
-嵌套if
- 最后有(或可能有)无条件的每用户覆盖
(
)从user\u功能中选择可用,其中user\u id=1和feature\u id=X
- DSL,用于描述来源对财产的影响,表示“此帐户类型可用”和“此国家/地区不可用”
- 每个已定义属性的源的有序列表
- 默认值可能只是另一个来源
我不知道这是否是一种模式,更像是一种算法。您可能想看看,寻找一种处理复杂规则系统的干净方法
您为规则定义DSL的想法也可能很好,DSL构建的结构是模式中描述的复合规范。如果有人碰巧理解我的意思,请随时澄清或标记。可能重复的
恰好理解了我的意思
在这里似乎很贴切。你需要某种解析算法。好的相关搜索词应该是:命名服务、目录服务、图形数据库、名称空间解析、环境覆盖、特征、策略模式。(不包括:wailing,youtube,Katz,TIMTOWTDI)好的@Preet,看起来我需要回到Goedel/Escher/Bach的书中去理解这一点。来源的重要性取决于一处房产的性质,我有大约200本。虽然,我可以在属性描述中包含源重要性。。。我得考虑一下。