淺談C#設(shè)計(jì)模式之代理模式
代理模式是常用的結(jié)構(gòu)型設(shè)計(jì)模式之一,當(dāng)無(wú)法直接訪問(wèn)某個(gè)對(duì)象或訪問(wèn)某個(gè)對(duì)象存在困難時(shí)可以通過(guò)一個(gè)代理對(duì)象來(lái)間接訪問(wèn),為了保證客戶(hù)端使用的透明性,所訪問(wèn)的真實(shí)對(duì)象與代理對(duì)象需要實(shí)現(xiàn)相同的接口.根據(jù)代理模式的使用目的不同,代理模式又可以分為多種類(lèi)型,例如保護(hù)代理、遠(yuǎn)程代理、虛擬代理、緩沖代理等,它們應(yīng)用于不同的場(chǎng)合,滿足用戶(hù)的不同需求
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignModel
{
public class Proxy:IAction
{
ZQZ zzz = null;
public Proxy(ZQZ mm)
{
zzz = mm;
}
public void SendFlower()
{
zzz.SendFlower();
}
public void SendCake()
{
zzz.SendCake();
}
}
public interface IAction
{
void SendFlower();
void SendCake();
}
public class ZQZ : IAction
{
public string myname { set; get; }
public void SendFlower()
{
Console.WriteLine(myname+"送花");
}
public void SendCake()
{
Console.WriteLine(myname+"送蛋糕");
}
}
}
客戶(hù)端調(diào)用:
ZQZ zzz = new ZQZ();
zzz.myname = "朱建軍";
Proxy p = new Proxy(zzz);
p.SendFlower();
p.SendCake();
代理模式分類(lèi):
1. 遠(yuǎn)程代理,也就是為一個(gè)對(duì)象在不同的地址空間提供局部代表,這樣可以隱藏一個(gè)對(duì)象存在于不同地址空間的事實(shí)。
例如: webservice 服務(wù)
2. 虛擬代理, 是根據(jù)需要?jiǎng)?chuàng)建開(kāi)銷(xiāo)很大的對(duì)象。通過(guò)它來(lái)存放實(shí)例化需要很長(zhǎng)時(shí)間的真是對(duì)象。
瀏覽器當(dāng)中是用代理模式來(lái)優(yōu)化下載頁(yè)面的
3.安全代理
用來(lái)控制真實(shí)對(duì)象訪問(wèn)時(shí)的權(quán)限。
4.智能指引
是指調(diào)用真實(shí)對(duì)象時(shí),代理處理另外一些事。
- 解析C#設(shè)計(jì)模式編程中外觀模式Facade Pattern的應(yīng)用
- C# 設(shè)計(jì)模式系列教程-外觀模式
- C#設(shè)計(jì)模式之外觀模式介紹
- C#設(shè)計(jì)模式之單例模式實(shí)例講解
- c#設(shè)計(jì)模式 適配器模式詳細(xì)介紹
- C#設(shè)計(jì)模式之觀察者模式實(shí)例講解
- 詳解C#的設(shè)計(jì)模式編程之抽象工廠模式的應(yīng)用
- C#中利用代理實(shí)現(xiàn)觀察者設(shè)計(jì)模式詳解
- C# 設(shè)計(jì)模式系列教程-策略模式
- 解析C#設(shè)計(jì)模式編程中的裝飾者模式
- C#設(shè)計(jì)模式之Facade外觀模式解決天河城購(gòu)物問(wèn)題示例
相關(guān)文章
C#使用System.Net.Mail類(lèi)實(shí)現(xiàn)郵件發(fā)送
這篇文章介紹了C#使用System.Net.Mail類(lèi)實(shí)現(xiàn)郵件發(fā)送的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Winform窗口實(shí)現(xiàn)多顯示屏顯示的2種方法
這篇文章主要介紹了Winform窗口實(shí)現(xiàn)多顯示屏顯示的2種方法,本文直接給出了實(shí)現(xiàn)代碼,并對(duì)其中的一些重要參數(shù)做了解釋,需要的朋友可以參考下2015-06-06WinForm自定義函數(shù)FindControl實(shí)現(xiàn)按名稱(chēng)查找控件
這篇文章主要介紹了WinForm自定義函數(shù)FindControl實(shí)現(xiàn)按名稱(chēng)查找控件,需要的朋友可以參考下2014-08-08C#在復(fù)雜多線程環(huán)境下使用讀寫(xiě)鎖同步寫(xiě)入文件
這篇文章介紹了C#在復(fù)雜多線程環(huán)境下使用讀寫(xiě)鎖同步寫(xiě)入文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04C#實(shí)現(xiàn)簡(jiǎn)單播放mp3的方法
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單播放mp3的方法,涉及C#播放多媒體文件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03C#使用SQL DataReader訪問(wèn)數(shù)據(jù)的優(yōu)點(diǎn)和實(shí)例
今天小編就為大家分享一篇關(guān)于C#使用SQL DataReader訪問(wèn)數(shù)據(jù)的優(yōu)點(diǎn)和實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10基于反射解決類(lèi)復(fù)制的實(shí)現(xiàn)方法
本篇文章對(duì)反射解決類(lèi)復(fù)制的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05字符串和十六進(jìn)制之間的轉(zhuǎn)換方法實(shí)例
這篇文章介紹了字符串和十六進(jìn)制之間的轉(zhuǎn)換方法實(shí)例,有需要的朋友可以參考一下2013-11-11C#中使用基數(shù)排序算法對(duì)字符串進(jìn)行排序的示例
Radix Sort基數(shù)排序是非比較型的排序算法,其時(shí)間復(fù)雜度是O(k·n),n為元素個(gè)數(shù),為數(shù)字位數(shù),這里我們就來(lái)看一下C#中使用基數(shù)排序算法堆字符串進(jìn)行排序的示例2016-06-06