在編碼時,由於開始是在winform下進行簡單的測試開發的,後來代碼多了,就想分到不同的類裡邊去,可是因為原來的測試是在同一個form下的,所以對於函數調用可以很方便,而一旦跨類之後,就會發現,這函數的耦合度太高,以至於不知道該怎麼樣解耦到類裡邊去。這時,不妨使用委托類型的Func和Action來實現。
下面是最開始測試時在winform裡寫的簡單代碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; namespace FunctionPass { public partial class FormMain : Form { public FormMain() { InitializeComponent(); } private void buttonTest_Click(object sender, EventArgs e) { test(); } public void test() { string sourceStr = collectData(); string digitStr = fetchDigit(sourceStr); MessageBox.Show("source:" + sourceStr + "\r\n digit:" + digitStr); } public string collectData() { return Guid.NewGuid().ToString(); } public string fetchDigit(string sourceStr) { Regex regex = new Regex(@"\d*"); MatchCollection digitCollection=regex.Matches(sourceStr); string digitStr = ""; foreach (Match digitMatch in digitCollection) { digitStr += digitMatch; } return digitStr; } } }
這裡通過colloectData函數收集數據,再通過fetchDigit提取數據中的數字,之後通過test函數顯示結果。
現在我想把顯示結果做成一個單獨的類(比如Test類),以便後面更好的擴展。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace FunctionPass { public class Test { public void test() { string sourceStr = collectData(); string digitStr = fetchDigit(sourceStr); MessageBox.Show("source:" + sourceStr + "\r\n digit:" + digitStr); } } }