需求:
   有一个虚拟的世界A,用A来表示,世界A中有一动物B,用B来表示,B动物中有一分类C ,用C来表示.
  他们三的关系:A中有N多个B,B中有N多个C;
  目地:做一个查找方法,Find(arg),只需知道该东西,就可以在世界中找有没有这东西.(不知道描述得清楚了没?)
  
  我用类A表示世界A,类B表示动物B,类C表示物种C.A中存储B是用一个List<B>来存储.B中存储C是用List<C>来存储
想在类A中与一方法Find(object arg);想实现如果现有有一分类C c1 = new C(); 调用Find(c1) 那么就可以知道类A中没有没存在c1,如果存在.返回c1有全部信息 如果有B b1 = new B();同理.也可以在A中调用Find(b1)就可知存在否?请问怎么设计比较好?
   
 

解决方案 »

  1.   

    你的解释已经包含了你的实现。你必须说明你觉得哪些是你的需求,哪些需要改进。按照你说的,直接遍历下就可以了。如果有多个条件,可以使用LINQ。如果你的类都能修改下的话,可以考虑迭代器模式。
      

  2.   

    这个和设计模式没有什么联系,关键是数据结构。为了更快的查找,你可以采用如下办法:
    1) 采用类似hash的办法,再设计一个类,分类保存这些对象。
    2) 为对象产生反向引用,就是在c内设计到b以及a的引用字段。
    3) 使用索引。
      

  3.   

    仅实现这个需求我觉得是不需要套用哪个模式的
    如果有扩展可以参考一下:组合模式Composite
      

  4.   

    个人感觉Composite模式是可行的 咋有人丢你板砖 啊哈 莫非是传说中的人品问题