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

推荐订阅源

The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 司徒正美
Last Week in AI
Last Week in AI
爱范儿
爱范儿
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
量子位
V
V2EX
博客园 - 叶小钗
宝玉的分享
宝玉的分享
T
Tailwind CSS 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();
        }
    }
}