我正在尝试编写基于它们具有的某些属性来过滤对象列表的代码。有很多方法可以过滤这些对象,因此我可以使用多个过滤器。我不确定这个问题是否重要,但这些过滤器类有不同的构造函数。
为了控制这些过滤器的创建,我已经阅读了工厂模式,并决定尝试一下。似乎有两种广泛使用的实现:
使用getType
方法,该方法使用例如在类型上切换语句以确定构建哪个对象。
为可以创建的所有可能对象创建单独的方法,例如createFilterA
,createFilterB
。
正如我所看到的,方法(2)的优点是:
它提供了可以制作过滤器的非常好的可见性,如 我的IDE立即告诉我工厂可用的方法。 虽然方法(1)没有制作可以制作的滤波器类型 用户已知。
不同的方法可以告诉我构建不同过滤器所需的参数是什么。
方法(1)的优点是:
我想知道我是否错过了这两个实现中的每一个的任何缺点/优点?我目前倾向于混合,即同时使用getType
和createFilterX
方法,其中getType
方法切换并调用单个createFilterA
,createFilterB
方法