0
我目前正試圖修改現有的Windows窗體項目以更好地遵守SOLID原則。目前有一個主類使得表單處於活躍狀態,然後所有的邏輯都在邏輯類中進行處理。與Windows窗體的C#類耦合
這會產生高耦合,並且不是無法測試的,因爲所有位置都會在主窗體上進行更改。例如,我有一個按鈕來刷新網格,這將調用邏輯類來構建數據,然後刷新網格。下面是它目前看起來的一個簡短例子。
public partial class XpressReports : Form
{
private void refresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
Globals.DataLogic.RefreshData();
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message);
}
}
}
public class DataLogic
{
public void RefreshData()
{
dataset selectedTableList;
selectedTableList = GetNonRefreshFlagColumnIdList();
dataGridView.Columns.Clear();
dataGridControl.DataSource = null;
dataGridControl.DataSource = dataViewData.Tables[0];
}
}
林不知道什麼是這樣的理想方法是。我可以創建一個新的方法來更新主窗體類中的數據源,但是在這兩者之間仍然會有很多後退和前進。分離這種事情的最好方法是什麼?
你有正確的想法。這不像你想像的那樣耦合。你使用的方法背後的想法是,如果需要的話,你可以換出UI,並且在背景中仍然具有所有相同的邏輯。我建議讓這個更鬆散一點的東西的唯一的東西就像你說的,讓你的任何控件更新UI端的源代碼。例如,RefreshData可以返回數據集,而不是使用此方法進行設置。你的表單方法可以從中設置數據源。這樣,你的邏輯總是返回一個數據集,並不關心用戶界面 – oppassum