首页 > 其他 > 详细

代理模式

时间:2020-07-12 23:35:29      阅读:57      评论:0      收藏:0      [点我收藏+]

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

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

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

技术分享图片

 

 

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

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();
        }
    }
}

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

代理模式与装饰模式:

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

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

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

代理模式

原文:https://www.cnblogs.com/king-tao/p/13290658.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!