1
の条件部分をリファクタリングするためのアプローチの改善:上記のコードは、新たな条件として成長する可能性が私は下記のようなコードの特定の部分をリファクタリングしようとしていたコード
Method(URL link)
{
if(ConditionA(link))
{
MehodA(link);
}else if(ConditionB(link))
{
MehodB(link);
}else if(ConditionC(link))
{
MehodC(link);
}else if(ConditionD(link))
{
MehodD(link);
}
}
:
元のコード将来来るかもしれない。
をリファクタリング後::リファクタリング後、私は次のように初期の複雑さを軽減し、したがって、単一の責任を重視複数のクラスごとにコードを分割することができる午前
METHOD(URL link)
{
ConditionalHandlerClass obj = new ConditionalHandlerClass(link);
ConditionalHandlerClass.HandleLinkProcessing();
}
Class ConditionalHandlerClass
{
URL link;
IConditionalProcess process;
public ConditionalHandlerClass(URL _link)
{
link = _link;
}
public void HandleLinkProcessing()
{
if(ConditionA(link))
{
process = new ProcessA(link);
}else if(ConditionB(link))
{
process = new ProcessB(link);
}else if(ConditionC(link))
{
process = new ProcessC(link);
}else if(ConditionD(link))
{
process = new ProcessD(link);
}
process.Handle();
}
}
interface IConditionalProcess
{
void handle();
}
class ProcessA() : IConditionalProcess
{
void handle()
{
// Business Logic here
}
}
class ProcessB() : IConditionalProcess
{
void handle()
{
// Business Logic here
}
}
class ProcessC() : IConditionalProcess
{
void handle()
{
// Business Logic here
}
}
class ProcessD() : IConditionalProcess
{
void handle()
{
// Business Logic here
}
}
しかし、私はしているHandleLinkProcessing()メソッドを参照してください新しい条件が追加され続けると、ConditionalHandlerClassクラスは依然として増加し続けるでしょう。
ConditionE()およびMethodE()呼び出しの新しいフローの追加時に、ConditionalHandlerClassなどのクラスを変更しないように、この実装をより良くする方法を提案できますか。したがって、新しい条件が追加されても、クラスの複雑さを一度に減らすことができます。
私はこのコードを目的cに書いています。
http://stackoverflow.com/questions/38184481/business-logic-validation-patterns-advices –