初了解静态代理

package StaticProxy;

/**
 * @Classname StaticProxy
 * @Description TODO
 * @Date 2021/11/1 11:38 上午
 */

/**   静态代理模式总结:
 *      1、真实对象和代理对象都要实现同一个接口
 *      2、代理对象要代理真实对象
 *
 *    好处:
 *      1、代理对象可以做很多真实对象做不了的事情(真实对象不关注)
 *      2、真实对象只专注自己的事情
 */
public class StaticProxy {

    public static void main(String[] args) {

       //You you = new You();
       //you.HappyMarry();    正常逻辑:谁去做事情,就谁去做

        WeddingCompany weddingCompany = new WeddingCompany(new You());
        weddingCompany.HappyMarry();

        new WeddingCompany(new You()).HappyMarry();

        //结合理解 lambda
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("...");
            }
        }).start();

        new Thread(()-> System.out.println("...")).start();
    }
}

interface Marry{
    void HappyMarry();
}


class You implements Marry{
    @Override
    public void HappyMarry() {
        System.out.println("我要结婚了,超开心");
    }
}

class WeddingCompany implements Marry{

    //代理谁?-->真实目标对象
    private Marry target;

    public WeddingCompany(Marry target) {
        this.target = target;
    }

    @Override
    public void HappyMarry() {
        before();
        this.target.HappyMarry(); //这是真实对象调用
        after();
    }

    private void before(){
        System.out.println("结婚前,准备工作");
    }

    private void after(){
        System.out.println("结婚后,收份子钱");
    }
}
posted @ 2021-11-01 12:00  淳粹的木子  阅读(37)  评论(0)    收藏  举报