Design patterns 如果我有n个条件需要处理,建议的设计/模式
我有一些条件,比如-Design patterns 如果我有n个条件需要处理,建议的设计/模式,design-patterns,ooad,Design Patterns,Ooad,我有一些条件,比如- List globalList = new ArrayList(); if(X.isExists) globalList(new XBasedClass()); if(Y.isExists && Z.isExists) globalList(new ZYBasedClass()); else if(Y.isExists || Z.isExists) globalList(new CommonBasedClass()); if(N.isExists
List globalList = new ArrayList();
if(X.isExists)
globalList(new XBasedClass());
if(Y.isExists && Z.isExists)
globalList(new ZYBasedClass());
else if(Y.isExists || Z.isExists)
globalList(new CommonBasedClass());
if(N.isExists)
....
首先我想到使用状态模式,但是我意识到对于每个条件我都需要声明类,并且我想限制类的数量
第二,我考虑使用装饰器模式,但同样需要进行上述条件检查,如果需要,则上述循环是否会产生任何问题
我的条件只是需要添加新的类到列表中,没有其他,即使在未来,如果条件数量增加,甚至工作将保持不变,即更新列表
所以我用一个静态方法创建了一个私有类,它只验证条件并相应地更新列表
是否有更好的推荐设计来实现它可以将创建委托给factory类。如果您有不同的实现类型集,那么将创建一个抽象工厂。这就是模式
我不确定这些if块是否只是一个示例,但可以对它们进行优化,例如将if(Y.isExists)移动到上层块。可以将创建委托给工厂类。如果您有不同的实现类型集,那么将创建一个抽象工厂。这就是模式
我不确定这些if块是否只是一个示例,但它们可以优化,例如将if(Y.isExists)移动到上一个块。我写这篇文章是为了回答一些评论
我写这篇文章是为了回答一些评论
你在说什么?对不起。。我指的是条件,更新了主要文本,你所做的看起来更干净,而不是不必要地使用设计模式使事情复杂化。我想你应该听听AmandeJiddewar的回答。不是每个地方都可以使用DP。是的,这是违反OCP的,但是,就个人而言,我看不到其他解决方案-因为你依赖于对象的数量(X,Y,Z,N)问题是
你的X,Y,Z IsExists的本质是什么
,语义-它与对象有关系吗?它是如何像查询表达式之类的。像这样,它可以是任何东西(你的Q有点毫无意义——因为它代表了一半的用例)-你可以使用factory,但只是将所有的if-s移到那里不会有多大帮助。始终要考虑事情的本质,设计模式会在以后出现。你在说什么循环?对不起……我是说条件,更新了正文。你所做的看起来比不必要地使用设计模式使事情复杂化更干净.我想你应该听Amandeep Jiddewar的回答。不是每个地方都可以使用DP。是的,这违反了OCP,但就个人而言,我看不到其他解决方案-因为你依赖于对象的数量(X,Y,Z,N)问题是X,Y,Z IsExists的本质是什么
,语义-它与对象相关吗?如何-它像查询表达式等。像这样,它可以是任何东西(而你的Q有点毫无意义-因为它代表了一半的用例)-您可以使用factory,但只是将所有if-s移入其中不会有多大帮助。请始终考虑事物的本质,设计模式会在稍后出现。