zoukankan      html  css  js  c++  java
  • 【大话设计模式读书笔记——代理模式】

    代理模式

    代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、内存中的大对象、文件或其它昂贵或无法复制的资源。
    维基百科-代理模式

    代理模式实现远程图片加载

     /// <summary>
        /// 图片接口
        /// </summary>
        interface IImage
        {
            void Display();
        }
    
     /// <summary>
        /// 真实图片类
        /// </summary>
       public class RealImage : IImage
        {
            public RealImage(string fileName)
            {
                FileName = fileName;
                LoadFromFile();
            }
    
            private void LoadFromFile()
            {
                Console.WriteLine("Loading " + FileName);
            }
    
            public String FileName { get; private set; }
    
            public void Display()
            {
                Console.WriteLine("Displaying " + FileName);
            }
        }
    
    
     /// <summary>
        /// 代理图片类
        /// </summary>
       public class ProxyImage : IImage
        {
            public ProxyImage(string fileName)
            {
                FileName = fileName;
            }
    
            public String FileName { get; private set; }
    
            private IImage image;
    
            public void Display()
            {
                if (image == null)
                    image = new RealImage(FileName);
                image.Display();
            }
        }
    
      IImage image = new ProxyImage("HiRes_Image");
                for (int i = 0; i < 10; i++)
                {
                    image.Display();
                }
    
    输出:
    Loading HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    Displaying HiRes_Image
    
  • 相关阅读:
    [力扣活动] 914. 卡牌分组
    [ 力扣活动0319 ] 409. 最长回文串
    88. 合并两个有序数组
    自己无聊封装一个 LTView
    ios ViewController 页面跳转
    UI打地鼠
    登陆页面,找回密码,注册页面(三个view的切换)
    登陆页面
    UIView 和Label
    对oracle里面clob字段里面xml的增删改查学习
  • 原文地址:https://www.cnblogs.com/q975261413/p/8167766.html
Copyright © 2011-2022 走看看