0

我正在構建winforms屏幕。在屏幕上,它會顯示具有多個屏幕的UI的服務層

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

點擊sub-1-1會彈出一個屏幕,顯示與子1-1的數據;同樣的子1-2,等等。所以總共會有五種形式(上面的例子有1個主窗體+4個彈出窗體(實際上有大約30個子類))。

我有型號爲Categories,sub-1-1,sub-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

第一個看起來像一個GOD類,並可能會違反大部分SOLID原則。它會使代碼難以重構,即使它只是一個facade

你當然應該使用較小的接口,只處理one responsibility