記錄大話設計學習程序,
代理模式:代理者為其他物件提供代理,以控制對真實物件的訪問,
用戶呼叫代理者,代理者通過真實的物件參考讓物件去做事情,但是代理者可以附加一些功能,然后才讓真實物件去做事情,
代理模式運用案例:WebService生成代理訪問服務,虛擬代理、安全代理(控制真實物件訪問時的權限)、智能參考,
using System; namespace ConsoleApp4 { class Program { public static void Main(string[] args) { var girl = new SchoolGirl("鄧紫棋"); Proxy proxy = new Proxy(girl); proxy.GiveFlowers(); proxy.GiveChocolate(); proxy.GiveDolls(); } } interface GiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate(); } class Pursuit : GiveGift { SchoolGirl girl; public Pursuit(SchoolGirl girl) { this.girl=girl; } public void GiveChocolate() { Console.WriteLine("送巧克力"); } public void GiveDolls() { Console.WriteLine("送洋娃娃"); } public void GiveFlowers() { Console.WriteLine("送花"); } } class Proxy : GiveGift { Pursuit Pursuit; public Proxy(SchoolGirl girl) { Pursuit = new Pursuit(girl); } public void GiveChocolate() { this.Pursuit.GiveChocolate(); } public void GiveDolls() { this.Pursuit.GiveDolls(); } public void GiveFlowers() { this.Pursuit.GiveFlowers(); } } internal class SchoolGirl { public string Name { get; set; } public SchoolGirl(string name) { this.Name = name; } } }View Code
using System; namespace ConsoleApp4 { class Program { public static void Main(string[] args) { Proxy proxy = new Proxy(); proxy.Request(); } } abstract class Subject { public abstract void Request(); } class RealSubject : Subject { public override void Request() { Console.WriteLine("真實物件在請求"); } } class Proxy : Subject { RealSubject realSubject; public Proxy() { this.realSubject = new RealSubject(); } public override void Request() { // 寫一堆附加功能代碼..... realSubject.Request(); } } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/22735.html
標籤:設計模式
上一篇:大話設計-裝飾模式
下一篇:簡單工廠模式(c++實作)
