WEB开发网
开发学院软件开发C语言 C# Design Patterns (4) - Proxy 阅读

C# Design Patterns (4) - Proxy

 2009-07-06 07:07:20 来源:WEB开发网   
核心提示: 02_VirtualProxy_Image / Program.csusingSystem;usingcom.cnblogs.WizardWu.Sample02;//客户端程序classProgram{staticvoidMain(string[]args){//当文档被打开时,Image

02_VirtualProxy_Image / Program.cs
using System;
using com.cnblogs.WizardWu.Sample02;

//客户端程序
class Program
{
    static void Main(string[] args)
    {
        //当文档被打开时,ImageProxy 对象会代替(代理) Image 对象被载入
        IGraphic image1 = new ImageProxy("风景图.jpg");
        Console.WriteLine("文档被打开,真实的图片尚未被载入.");
        Console.ReadLine();

        Console.WriteLine("用户已把滚动条滚到特定页数,图片此时才从硬盘载入.");

        image1.draw();          //真正要显示图片了

        Console.ReadLine();
    }
}

//服務器端程序
namespace com.cnblogs.WizardWu.Sample02
{
    //此为「代理者、被代理者」共同的接口
    public interface IGraphic
    {
        //用来画图的方法
        void draw();
    }

    //被代理者。真实的对象,把复杂性封装在此
    public class Image : IGraphic
    {
        private byte[] data;

        public Image(String fileName)             //构造函数
        {
            //载入图片。把复杂性封装起来
            //data = loadImage(fileName);
            Console.WriteLine("开始载入图片...");
        }

        public void draw()
        {
            //绘制图片在屏幕上。把复杂性封装起来
            //drawToScreen(data);
            Console.WriteLine("图片已成功绘制在屏幕上.");
        }
    }

    //代理者
    public class ImageProxy : IGraphic
    {
        private String fileName;
        private Image image;

        public ImageProxy(String filename)     //构造函数
        {
            this.fileName = filename;
            image = null;
        }

        //等到真正要显示图片了,这个 ImageProxy 的 draw 方法才会被调用,
        //此时才会真正去创建 Image 对象,并从硬盘中载入图片
        public void draw()
        {
            //虚拟代理。仅在方法第一次被调用时,才创建资源消耗大的 Image 对象
            if (image == null)
            {
                image = new Image(fileName);                
            }

            //实际去绘制图片在萤幕上
            image.draw();
        }
    }

} // end of namespace


/*
 执行结果:
 
文档被开启,真实的图片尚未被载入.

用户已把滚动条滚到特定页数,图片此时才从硬盘载入.
开始载入图片...
图片已成功绘制在屏幕上.

 */

上一页  1 2 3 4 5 6  下一页

Tags:Design Patterns Proxy

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接