欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談C#設(shè)計(jì)模式之代理模式

 更新時(shí)間:2014年12月17日 10:54:06   投稿:hebedich  
這篇文章主要介紹了淺談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ù)的不同需求

復(fù)制代碼 代碼如下:

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)用:

復(fù)制代碼 代碼如下:

  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í),代理處理另外一些事。

相關(guān)文章

最新評(píng)論