zoukankan      html  css  js  c++  java
  • 代理模式

    赘述:今日所读,代理模式,只是今日所理解,略显稚嫩和浅薄。在博客中记录这些,也不是为了指导谁,只是记录下今日所学,所思,是谓产出。

    代理模式:为其他象提供一种代理控制对这个对象的访问。

    从代理模式的定义,不难看出,代理模式是提供了一个代理类,可以控制被代理对象的访问。类似于房产中介中的中介,可以代理卖房人进行买房,决定卖房人的卖房行为。看类图:

     可以看出,代理类和被代理对象,都实现了共同的接口,其中代理类中封装了被代理对象的引用,这样就可以在代理类中调用被代理对象的行为。

    1.公用接口:

    namespace 代理模式.model
    {
        public interface ISubject
        {
            void Request();
        }
    }

    2.被代理对象实现公用接口:

    namespace 代理模式.model
    {
       public class Subject:ISubject
        {
            public void Request() 
            {
                Console.WriteLine("真实请求");
            }
        }
    }

    3.代理类实现公用接口,并包装了被代理对象的引用:

    namespace 代理模式.model
    {
        public class Proxy:ISubject
        {
            private Subject realSubject;
    
            public void Request() 
            {
                if (realSubject== null)
                    realSubject=new Subject();
                realSubject.Request();
            }
        }
    }

    以上代码就实现了一个简单的代理模式。所以,代理模式是代理了对象的访问。

    代理模式与装饰模式:

      看代理模式的类图,会发现,它与装饰模式的类图实现是如此的类似。装饰模式具体实现过程是通过抽像化一个构件对象,来扩展具体的构件对象职能。其中构件对象和抽线装饰角色类都实现了该抽象接口;装饰角色抽象类中包装了一个具体的构件对象,装饰类继承该抽象类,实现自己的装饰职能,同时调用具体构件对象。以上,是装饰模式下,实现扩展构件对象职能的思路说明。抛开其他的不说,这个不就是完全的代理模式吗。

      二者的区别就在于,代理模式是代理了对象,控制了对象的访问,而装饰模式只是扩展了对象的职能,并不能影响到对象。

    模式的具体区别除了在实现了方式外,最重要的是其设计的目的型。代理模式与装饰模式最根本的区别是其二者目的性不同,不在于具体的实现差异。

  • 相关阅读:
    Httpclient5工具类
    temp
    《On Java 8》笔记 2
    《On Java 8》笔记
    《Effective Java》笔记 4~5
    Oracle数据库对比MySQL
    《Effective Java》笔记
    [BUAA2021软工]结对第一阶段博客作业小结
    Spring Boot入门
    MyBatis入门
  • 原文地址:https://www.cnblogs.com/king-tao/p/13290658.html
Copyright © 2011-2022 走看看