【多线程】静态代理

当使用静态代理模式时,我们会有一个真实的对象(RealSubject),一个代理对象(ProxySubject),代理对象将请求转发给真实对象,并可以在请求前后执行额外的操作。

真实对象和代理对象要实现同一个接口

代理对象要代理真实角色

比如 找中介买房

真实对象:买家

代理对象:中介

package org.example;

public class StaticProxy {
    public static void main(String[] args) {
        He he=new He(new You());
        he.HappyBuy();

    }
}

interface Buy{
    void HappyBuy();
}

class You implements Buy{

    @Override
    public void HappyBuy() {
        System.out.println("xxx要买房了");
    }
}
//代理对象,帮助你买房
class He implements  Buy{
    private  Buy target;

    public He(Buy target){
        this.target=target;
    }
    @Override
    public void HappyBuy() {
       before();
       this.target.HappyBuy();
       after();
    }

    public  void before(){
        System.out.println("带客户看房,签订买卖合同,支付房款");

    }
    public void after(){
        System.out.println("搬进新房");
    }
}

【多线程】静态代理_第1张图片

总结:

首先创建了一个接口(buy ),并且定义了一个方法(HappyBuy )

真实对象(You )调用 HappyBuy方法

class You implements Buy{

    @Override
    public void HappyBuy() {
        System.out.println("xxx要买房了");
    }
}

代理对象(He )调用  HappyBuy方法

class He implements  Buy{
    private  Buy target;

    public He(Buy target){
        this.target=target;
    }
    @Override
    public void HappyBuy() {
       before();
       this.target.HappyBuy();
       after();
    }

    public  void before(){
        System.out.println("带客户看房,签订买卖合同,支付房款");

    }
    public void after(){
        System.out.println("搬进新房");
    }
}

 创建主函数实现

将真实对象丢进代理对象,让代理对象去执行

  He he=new He(new You());
public class StaticProxy {
    public static void main(String[] args) {
        He he=new He(new You());
        he.HappyBuy();

    }
}

你可能感兴趣的:(多线程,java)