具有多个屏幕的UI的服务层

时间:2012-05-11 05:23:13

标签: model-view-controller design-patterns model mvp service-layer

我正在构建一个winforms屏幕。在屏幕上,它将显示

Category1
  Sub-1-1
  Sub-1-2
  Sub-1-3
Category2
  Sub-2-1

单击sub-1-1将弹出一个屏幕并显示与子1-1相关的数据;相同的子1-2,...等所以总共有五种形式(上面的样本有1种主要形式+4种弹出形式(实际上将有大约30个子类别)。)

我有Categoriessub-1-1sub-1-2,...,sub-2-1的模型。我正在写一个服务层。我应该这样做,

public class ServiceLayer 
{
  CategoriesModel GetCategories();
  Sub11Model GetSub11();
  Sub12Model GetSub12();
  Sub13Model GetSub13();
  Sub21Model GetSub21();
  .....
}

或者每个表单都有现在的服务类实例?

public class ICategoryService { ... }
public class ISubCategoryService<T> 
{
  T GetSub();
}

var sub11 = new SubService<Sub11Model>();
var sub12 = new SubService<Sub12Model>();
var sub13 = new SubService<Sub13Model>();
var sub21 = new SubService<Sub21Model>();
....

1 个答案:

答案 0 :(得分:1)

第一个类似于GOD类,可能会违反大多数SOLID原则。它会使代码难以重构,即使它只是facade

您当然应该使用仅处理one responsibility的较小接口。