正确的模式设计父子类

时间:2013-11-11 11:32:16

标签: c# wpf oop design-patterns

如何设计Parent-Child类。

注意:这里Parent不是基类,而是显示一对多的关系。

接近“A”

public class Company
{
   public int CompanyID;
   ...
   public IList<Branch> Branches;
}

public class Branch
{
}

Appraoch“B”

public class Company
{   
   public int CompanyID;
   ...
}

public class Branch
{
   public int CompanyID; //which represents company object
}

分支屏幕的最终UI设计:=

在树视图中显示以查看屏幕: -

Company A
    Branch 1
    Branch 2
Company B
    Branch 3
    Branch 4
    Branch 5

添加/编辑屏幕(2个单独的屏幕): -

Company - Company Drop-down
other attributes of Branch

1)如果我们看到View屏幕然后方法“A”看起来很好,如果我们看到添加/编辑屏幕方法“B”看起来很好。

2)在使用方法“A”时,当我必须返回分支数据时,我必须实际返回公司类型而不是分支类型:

Company GetBranch(int BranchID)

3)我们的数据库设计基于方法“B”,其中分支表存储CompanyID

有人可以建议一下这个好方法吗?

1 个答案:

答案 0 :(得分:2)

IMO没有“权利”这样做。这一切都取决于您打算如何使用和存储/检索数据。

将分支机构存储在公司之下我的原因是巨大的流量开销(因为即使您关心的只是公司或特定分支,您将始终通过所有分支机构),仅使用ID我会导致额外的“查询”以便加载所有相关数据。 我将使用与实体框架的工作方式类似的实现:

我会拥有分支和公司ID存储库并保留导航属性(Comany.Branches,Branch.Company)并且有一个函数来填充仅在需要时调用的属性。

例如,您可以使用仅返回公司的GetCompany(id)函数和将返回填充了其分支的公司对象的GetCompanyWithBranche(id,int? brandchid)(如果指定了id,则返回单个分支)。这样,您就可以确定要检索的数据量。