惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
罗磊的独立博客
The GitHub Blog
The GitHub Blog
L
LangChain Blog
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
DataBreaches.Net
宝玉的分享
宝玉的分享
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
N
Netflix TechBlog - Medium
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
美团技术团队
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog

博客园 - star163

开源项目管理工具 [转]项目管理和版本跟踪——Redmine和SVN的结合 [转]在项目管理工具Redmine中使用SubVersion进行版本管理 [转]非常全的javascript控制MediaPlayer与realplayer对象 [转]让VS2008支持JQUERY的javascript语法提示 [转]强烈推荐:jQuery-240多个jQuery插件 [转]详谈基于JSON的高级AJAX开发技术 使用JavaScript中的ActiveXObject填充并设置Excel格式 - star163 - 博客园 [转]ASP.NET MVC Framework 尝鲜小试 - star163 MVC资源 [转]ASP.NET MVC 框架路线图更新 [转]用WMI实现Windows系统自动管理(多图) 优秀开源资源 UPDATE实现多表更新 [转]50种方法巧妙优化SQL Server数据库 [转]使用面向对象的技术创建高级 Web 应用程序 .NET常用设计模式——迭代器模式 NET常用设计模式——组合模式 NET常用设计模式——单件模式
NET常用设计模式——代理(Proxy)模式
star163 · 2007-12-23 · via 博客园 - star163

代理(Proxy)模式

  • 大数据调用
  • 大计算
  • 远程计算机访问
  • 限制访问权限

 应用实例1

using System;
using System.Drawing;
namespace Proxy
{
    
/// <summary>
    
/// Summary description for Imager.
    
/// </summary>
    public interface Imager
    {
        Image getImage();
    }
}

using System;
using System.Drawing;
namespace Proxy
{
    
/// <summary>
    
/// Summary description for QuickImage.
    
/// </summary>
    public class QuickImage : Imager
    {
        
public QuickImage() { }
        
public Image getImage()
        {
            
return new Bitmap("Box.gif");
        }
    }
}

using System;
using System.Drawing;
namespace Proxy
{
    
/// <summary>
    
/// Summary description for FinalImage.
    
/// </summary>
    public class FinalImage : Imager
    {
        
public FinalImage() { }
        
public Image getImage()
        {
            
return new Bitmap("flowrtree.jpg");
        }
    }
}

using System;
using System.Drawing;
using System.Threading;
namespace Proxy
{
    
/// <summary>
    
/// Summary description for ImageProxy.
    
/// </summary>
    public class ImageProxy
    {
        
private bool done;
        
private Timer timer;
        
//-----
        public ImageProxy()
        {
            
//定时调用方法,如果调用成功则进行标记
            
//5000为延迟
            timer = new Timer(new TimerCallback(timerCall), this100000);
        }
        
//-----
        private void timerCall(object obj)
        {
            done 
= true;//如果调用成功则进行标记
            timer.Dispose();
        }
        
//-----
        public Image getImage()
        {
            Imager img;
            
if (done)
                img 
= new FinalImage();
            
else
                img 
= new QuickImage();
            
return img.getImage();
        }
    }
}