代理模式顧名思義,就是“代理者”幫別人去做事,但是在幫人做事的前後,這個“代理者”可以做一些其它的邏輯。比如日誌代理、緩存代理、權限代理。也屬於AOP的思想,可以在不改變原始類的情況下進行功能擴展。
如有以下原始類:
public abstract class StudentBase
{
public string name { get; set; }
public abstract void EatFood();//吃東西
public abstract void Study();//學習
}
public class StudentClassOne: StudentBase
{
public override void EatFood()
{
System.Diagnostics.Debug.WriteLine($"{name} 開始吃東西了");
System.Diagnostics.Debug.WriteLine($"吃西瓜");
}
public override void Study()
{
System.Diagnostics.Debug.WriteLine($"{name} 開始學習了");
}
}
對其進行代理,代理類如下:
public class StudentProxy: StudentBase
{
private StudentBase studentBase = new StudentClassOne();
public override void EatFood()
{
//寫日誌,如:記錄請求參數、記錄代碼執行開始時間、讀取緩存
studentBase.EatFood();
//寫日誌,如:記錄響應參數、記錄代碼執行結束時間、緩存響應參數
}
public override void Study()
{
studentBase.Study();
}
}