如何使用设计模式来解决分组收集规则?

All*_*Koo 0 design-patterns

假设我有一组数字,例如.A = [2,3,4,5,6,7,8,9,10,11,12].

和几个规则如下:a:数字是3的倍数; b:数字是5的倍数;

根据规则,将原始集合分成三个很容易:

A_3 = [3, 6, 9, 12]
A_5 = [5, 10]
A_other = [2, 4, 7, 8, 11]
Run Code Online (Sandbox Code Playgroud)

我想知道设计收集类和规则以实现目标的最佳方法:

  1. 添加或减少规则很容易
  2. 可以轻松更改集合中元素的类型

谢谢.

ara*_*ara 7

据我说,您应该使用策略模式,当您的算法可以与算法的不同变体互换时,通常使用策略模式.

例如,

如果你有代码创建像你的数组,在某些情况下,你可能想要选择3的倍数,在其他情况下,你可能想要选择5的倍数.

策略模式通常如下实现

使用算法方法声明一个抽象基类,然后通过继承具体类来实现.在代码中的某一点,决定了什么具体的策略是相关的,然后它将被实例化并在任何相关的地方使用.

我不确定这是否符合您的要求.

我不能断定你只能用这个,我总是相信TIMTOWTDI