繁体   English   中英

重构树控制器,可与许多不同类型一起使用

[英]Refactor tree controller which works with many different types

我正在重构处理树的类(控制器)。 因为树中有许多不同的类型(大约20种)。 它通常使用以下结构来处理例如插入:

  1. 确定对象的类型
  2. 做一些类型特定的事情并将对象插入树

     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 } 

因此,用于确定对象类型的逻辑已在类中的许多地方使用。 有没有一种好的方法可以将这种逻辑集中在一个地方?

您可能要使用Strategy(GoF)模式:

http://en.wikipedia.org/wiki/Strategy_pattern

  1. 使用addToTree(Tree tree)方法创建接口LivingAnimal
  2. 在对象CatDog等中实现此接口。
  3. Cat.addToTree(Tree tree) (和其他对象)中,进行猫的特定操作,然后将自身添加到树中( tree.add(this)
  4. 在您的控制器中,创建一个方法addChildren(LivingAnimal p) 此方法找到对象的正确类型(猫,狗等),并在其上调用addToTree(tree)

使用Strategy(GoF)时,您将职责委派给正确的对象。 在这种情况下,您将简化控制器并在各种对象上保持较高的凝聚力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM