设计模式之代理模式(二结构型)

1.什么是代理模式?

  为其他对象提供一种代理,并以控制对这个对象的访问。(Provide asurrogate or placeholderforanother object tocontrol access to it. )而对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化。它是给某一个对象提供一个替代者(占位者),使之在client对象和subject对象之间编码更有效率。代理可以提供延迟实例化(lazy instantiation),控制访问, 等等,包括只在调用中传递。 一个处理纯本地资源的代理有时被称作虚拟代理。远程服务的代理常常称为远程代理。强制 控制访问的代理称为保护代理。

代理模式的缺点:
  由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
  实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

2.代理模式应用场景?

  中介租房,代理服务器等。

3.代理模式使用举例。

  西门庆与潘金莲私通,是通过王婆作为代理,来实现的,另外假如他和贾氏也可以有染,也可以由王婆作为代理。具体类图如下:

 

核心代码描述为:

/**
* @FileName ICoquettishWoman.java
* @Package com.ali.pattern.proxy
* @Description TODO[what the file to do]
* @Author ali blog:http://www.cnblogs.com/accipiter
* @Date 2016年1月18日下午11:34:25
* @Version V1.0.1
*/
package com.ali.pattern.proxy;

/**
 * @ClassName ICoquettishWoman
 * @Description TODO
 * @Date 下午11:34:25
 */
public interface ICoquettishWoman {
    public void makeEyes();
    public void makeLove();
}

代理类ProxyWangpo

/**
* @FileName ProxyWangpo.java
* @Package com.ali.pattern.proxy.impl
* @Description TODO[what the file to do]
* @Author ali blog:http://www.cnblogs.com/accipiter
* @Date 2016年1月19日上午12:15:32
* @Version V1.0.1
*/
package com.ali.pattern.proxy.impl;

import com.ali.pattern.proxy.ICoquettishWoman;

/**
 * @ClassName ProxyWangpo
 * @Description TODO
 * @Date 上午12:15:32
 */
public class ProxyWangpo implements ICoquettishWoman{
    
    private ICoquettishWoman iCoquettishWoman=null;

    public ProxyWangpo(ICoquettishWoman iCoquettishWoman){
        this.iCoquettishWoman=iCoquettishWoman;
    }
    @Override
    public void makeEyes() {
        this.iCoquettishWoman.makeEyes();
    }

    @Override
    public void makeLove() {
        this.iCoquettishWoman.makeEyes();
    }
    
}

===================华丽分割线=================================

其他代码,想要可以联系。。

posted @ 2016-01-19 00:50  alexander.bruce.lee  阅读(360)  评论(0编辑  收藏  举报