代理(Proxy)模式
- 大数据调用
- 大计算
- 远程计算机访问
- 限制访问权限
应用实例1
using
System;
using System.Drawing;
namespace Proxy
{
/// <summary>
/// Summary description for Imager.
/// </summary>
public interface Imager
{
Image getImage();
}
}
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.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.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), this , 10000 , 0 );
}
// -----
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();
}
}
}
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), this , 10000 , 0 );
}
// -----
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();
}
}
}