【大话设计模式读书笔记——代理模式】

代理模式

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

维基百科-代理模式

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

 /// <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

原文地址:https://www.cnblogs.com/q975261413/p/8167766.html

时间: 2024-11-05 18:59:54

【大话设计模式读书笔记——代理模式】的相关文章

【大话设计模式读书笔记——原型模式】

原型模式 原型模式是创建型模式的一种,其特点在于通过"复制"一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的"原型",这个原型是可定制的. 原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效:或者创建值相等,只是命名不一样的同类数据. /// <summary> /// 简历类 /// </summary> public class Resume : ICloneable

大话设计模式读书笔记2——策略模式

策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类直接的耦合. UML 图: 根据<大话设计模式>——第二章 商场促销这个案例代码来简单的记录一下策略模式的使用方式: /// <summary> /// 现金收费抽象类 /// </summary> public abstract class CashSuper { /// <summary> ///

大话设计模式读书笔记1——简单工厂模式

最近几日,重温了一下<大话设计模式>这本书,当时读的仓促,有很多没有注意的地方,现在仔细翻看起来,发现这值得细细品味的一本书!! 好东西就要记下来!!! 第一章笔记:从一个简单的计算器程序来看简单工厂模式. 变化的地方就要封装,用一个单独的类来做创造实例的过程这就是工厂. UML图: /// <summary> /// 运算类 /// </summary> public class Operation { public double Number1 { get; set

大话设计模式读书笔记2——单例模式

单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 我们来看一下单例模式下的饿汉模式代码: /// <summary> /// 饿汉模式 /// </summary> public class Singleton { //私有的构造器 private Singleton() {

大话设计模式读书笔记6——代理模式

代理模式: 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. UML结构如下图: 代码实现: //定义一个Subject 抽象类 public abstract class Subject { public abstract void Request(); } //定义一个RealSubject类,继承Subject public class RealSubject : Subject { public override void Request() { Console.W

大话设计模式读书笔记--设计模式总结

前言 大话设计模式看了两遍,之前看过一遍,理解的不深刻, 这次用了一个月多点的时间再次温习,利用下班后的时间回来学习,把学习心得记录下来,加深了对面向对象的理解 之前是看到一个需求搞清楚业务流程之后立刻就去做了,很少从设计层面的角度考虑,现在在开发程序时,开始有了设计的思想,也有了达到可维护,可复用,可扩展目的具体的实现方法 每当看到经过优化代码的效果时,就想起一句话:精彩的代码是如何想出来的,比看到精彩的代码更加令人兴奋 下面是用自己的话进行的总结,以便加深记忆和理解 创建型 抽象工厂 定义:

大话设计模式C++版——代理模式

本篇开始前先发个福利,程杰的<大话设计模式>一书高清电子版(带目录)已上传至CSDN,免积分下载. 下载地址:http://download.csdn.net/detail/gufeng99/8843487 代理模式是一种比较简单但却实用的设计模式,他可以灵活的更换代理的对象,但保证功能的完整性,就如卖衣服的代理商,他可以代理美特斯邦威的衣服,如果美特斯邦威的衣服被大家吐槽不好卖了,他还可以换去代理卖佐丹奴的,但不管怎么更换,还是能满足大家的需求--买衣服. 下面以大话设计模式书中的例子为例,

设计模式(&quot;大话设计模式&quot;读书笔记 C#实现)

前言:毫无疑问 ,学习一些设计模式,对我们的编程水平的提高帮助很大.写这个博客的时候自己刚开始学习设计模式,难免有错,欢迎评论指正. 我学设计模式的第一本书是“大话设计模式”. 1.为什么要学设计模式? 设计模式的存在就是为了抵御需求变更.学会了这些思想,开始一个项目的时候考虑的更多,当用户提出变更的时候项目改动更少. 2.怎么才能学会设计模式? 我不知道,不过轮子哥(vczh)文章中的一句话,我觉得对,就是:“设计模式就是因为情况复杂了所以才会出现的,所以我们只能通过复杂的程序来学习设计模式.

大话设计模式读书笔记(一)

上周从同事那里搞到一本大话设计模式的书,便看了起来,对于我这种非科班出身的人来说,还是很有用处的.这些设计模式的终极目的都是让代码更好看,更好用,更好拓展,在需求变化的时候,尽可能少的改动代码 先记录自己已经学到的几个部分: 1.开放——封闭原则 软件实体对于拓展的开放的,对于修改时封闭的.及对已经写好的类来说尽力避免修改,可以通过拓展其父类来实现对他的修改.增强可维护性. 2.单一职责原则 就一个类而言,应该只有一个引起它变化的原因 具体而言,如果你能想到多于一个动机去改变一个类,那么这个类就