设计模式

代理模式(Proxy)

2020-07-23  本文已影响0人  秀儿2020

定义

为其他对象提供一种代理,以控制对这个对象的访问。

本质

控制对象访问。

登场角色

示例代码

/**
 * 抽象主体
 */
public interface ILawsuiit {
    public void submit(); //提交申请
    public void burden();//进行举证
    public void defend();//开始辩护
    public void finish();//诉讼完成
}



/**
 * 具体的主体
 */
public class XiaoMing implements ILawsuiit{
    @Override
    public void submit() {
        System.out.println("老板拖欠工资。");
    }

    @Override
    public void burden() {
        System.out.println("这是合同书和过去一年的工资流水。");
    }

    @Override
    public void defend() {
        System.out.println("证据确凿,不需要再说什么了。");
    }

    @Override
    public void finish() {
        System.out.println("诉讼成功。");
    }
}


/**
 * 代理人
 */
public class Laywer implements ILawsuiit{
    private ILawsuiit lawsuiit;

    public Laywer(ILawsuiit lawsuiit) {
        this.lawsuiit = lawsuiit;
    }

    @Override
    public void submit() {
        lawsuiit.submit();
    }

    @Override
    public void burden() {
        lawsuiit.burden();
    }

    @Override
    public void defend() {
        lawsuiit.defend();
    }

    @Override
    public void finish() {
        lawsuiit.finish();
    }
}


public class Client {
    public static void main(String[] args){
        //构造一个小明
        ILawsuiit xiaoming = new XiaoMing();
        //构造一个代理律师
        ILawsuiit lawer = new Laywer(xiaoming);
        //律师提出诉讼申请
        lawer.submit();
        //律师进行举证
        lawer.burden();
        //律师代替小明进行辩护
        lawer.defend();
        //律师完成诉讼
        lawer.finish();
    }
}

运行结果

老板拖欠工资。
这是合同书和过去一年的工资流水。
证据确凿,不需要再说什么了。
诉讼成功。

功能

代理模式是通过创建一个代理对象,用这个代理对象去代表真实的对象,客户端得到这个代理对象后,对客户端并没有什么影响,就跟得到了真是对象一样来使用。

当客户端操作这个代理对象的时候,实际上功能最终还是会由真实的对象来完成,只不过是通过代理操作的,也就是客户端操作代理,代理操作真正的对象。

上一篇 下一篇

猜你喜欢

热点阅读