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

推荐订阅源

Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
Recent Announcements
Recent Announcements
A
About on SuperTechFans
U
Unit 42
MyScale Blog
MyScale Blog
J
Java Code Geeks
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
D
Docker
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 司徒正美
量子位
月光博客
月光博客
G
Google Developers Blog
V
V2EX
博客园 - 聂微东
宝玉的分享
宝玉的分享
IT之家
IT之家
Vercel News
Vercel News

博客园 - 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();
        }
    }
}