我正在重构一个处理树的类(Controller)。因为树中有许多不同的类型(大约20个)。它通常使用以下结构来处理例如插入:
做一些特定类型的事情并将对象插入树
public void AddChildren(Animal animal)
{
var cat = animal as Cat;
if (cat != null)
{
AddCat(cat);
return;
}
var dog = animal as Dog;
if (dog != null)
{
AddDog(dog);
return;
}
}
public void AddCat(Cat cat)
{
//do some cat specific things
//add to tree
}
因此,确定对象类型的逻辑在类中的许多地方使用。是否有一种很好的方法可以将这种逻辑集中在一个地方?
答案 0 :(得分:1)
您可能想要使用策略(GoF)模式:
http://en.wikipedia.org/wiki/Strategy_pattern
当您使用策略(GoF)时,您将责任委派给正确的对象。在这种情况下,您将简化控制器并在各种对象上保持高凝聚力。