在編碼時,由於開始是在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);
}
}
}