欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java静态代理---理解

程序员文章站 2022-06-10 16:30:00
...

 

 

package com.wang.thread;


/**
 * 静态代理:
 * 真实对象和代理对象实现同一个接口
 * 接口中定义了真实对象需要做的事情,但不知道细节
 * 真实对象实现接口,了解要做的事情的所有细节
 * 代理对象,满足真实对象去做自己的事情,但是可以提供一些额外的帮助
 */
public class ProxyDemo {
    public static void main(String[] args) {
        People people = new People("小王");

        MarryProxy mp = new MarryProxy();
        mp.setPeople(people);
        mp.happyMary();

    }
}


interface Marry{
//    不知道细节,但是知道真实对象要做的事情
    void happyMary();
}

/**
 * 真实对象
 */
class People implements Marry{

    public People(String name) {
        this.name = name;
    }

    private  String name;

    //细节
    @Override
    public void happyMary() {
        System.out.println(this.name+"结婚了");
    }
}

class MarryProxy implements Marry{

    private People people;

    public People getPeople() {
        return people;
    }

    public void setPeople(People people) {
        this.people = people;
    }

    ///代理对象,重写接口方法时,可以做一些其他的操作,达到增强原有功能的作用。
    @Override
    public void happyMary() {
        before();
        this.people.happyMary();
        after();
    }

    void before(){
        System.out.println("准一些准备工作");
    }

    void after(){
        System.out.println("准一些善后工作");
    }
}

 

相关标签: 静态代理