代码之家  ›  专栏  ›  技术社区  ›  derdo

如何简化导致方法调用链接的层次类结构?

  •  0
  • derdo  · 技术社区  · 14 年前

    在我正在处理的问题中,我有以下类的层次结构。

    DiscountEvent
      DiscountGroup
        ProductFamily
          Product
    

    其中每个类包含下一个类的集合(例如,DiscountEvent包含一个DiscountGroups集合等)

    这种有点深的层次结构导致了来自更高模块的许多链接调用。 例如,当将产品数据从数据库读取到这个类层次结构中时,我有调用链和类似的 AddProduct 方法。

    class DiscountEvent{
      Dictionary<int, DiscountGroup> DiscountGroups;
      public void AddProduct(ProductInfo info){
        DiscountGroups[info.groupId].AddProduct(info);
      }
      ...
    }
    class DiscountGroup{
      Dictionary<int, productFamily> productFamilies;
      public void AddProduct(ProductInfo info){
        productFamilies[info.familyId].AddProduct(info);
      }
      ...
    }
    ...
    

    类似的添加方法一直添加到叶类。你能想出任何方法来简化这种层次类结构吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Sergey Teplyakov    14 年前

    最现代 ORM 可以帮你解决这个问题。

    实际上,你不能简化你的“层次结构”,因为它是基于现实生活的抽象,但是你可以简化你的生活,消除手工儿童的数量。

    在这种情况下,您仍然需要所有子集合(因为这是域逻辑或数据访问层的一部分),但ORB实现会隐藏所有这些复杂性(填充它们)。

        2
  •  0
  •   sje397    14 年前

    一个想法是使用 Serializer Pattern …因为您正在从数据库“反序列化”。

    也就是说,你可能有 DiscountEventReader 类,将数据库连接传递到该类中,它可能调用其他读取器类来创建包含的对象实例。

    例如,ProductFamilyReader可以读取(并可能缓存)多个数据库行,从而添加多个 Product 父容器的实例,而不遍历每个新对象的“addProduct”调用的整个层次结构。