Proxy estático Java SE

    Modo proxy (proxy):

            Proporcione un objeto de proxy al objeto de destino y el objeto de proxy controla la referencia al objeto de destino .

            En el modo proxy, el objeto proxy y el objeto de destino deben implementar la misma interfaz .

IPerson.interface

package proxy;

public interface IPerson {
    public void say();
}

Tomemos la tala como ejemplo

Si no hay ningún agente, el código de registro debe escribirse en cada método de objeto de destino, que es la redundancia de código. como sigue

public class Man implements IPerson {

    @Override
    public void say() {
        
        long begin = System.currentTimeMillis();
        System.out.println("男人赚钱养家");
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
    }

}

Si se utiliza un proxy estático:


    Proxy estático:


      El proxy estático se produce durante la compilación. Recibió la creación. La interfaz, la clase de proxy, la clase de proxy, etc. ya se han determinado en el momento de la compilación. Tanto la clase de proxy como el objeto de proxy deben implementar la misma interfaz. Al mismo tiempo, el objeto de proxy debe manipular el objeto de destino.

Desventajas: La interfaz y la clase de proxy son uno a uno. Si hay múltiples proxies de interfaz, se necesitan múltiples clases de proxy, lo cual es engorroso y explosivo de clases.

Clase de hombre

package proxy;

public class Man implements IPerson {

    @Override
    public void say() {
        System.out.println("男人赚钱养家");
    }

}

PersonProxy.class

package proxy;

public class PersonProxy implements IPerson{
    IPerson person;

    public PersonProxy(IPerson person){ //把目标对象person传入
        this.person=person;             //生成本类的person对象
    }

    @Override
    public void say() {
        long begin = System.currentTimeMillis();
        person.say();                   //引用目标对象调用目标对象的方法
        long end = System.currentTimeMillis();
        System.out.println(end-begin);
    }
}

ProxTest.class

package proxy;

public class ProxTest {
    public static void main(String[] args) {
        Man man = new Man();
        Women women = new Women();
        OldMan oldMan = new OldMan();

        PersonProxy manProxy = new PersonProxy(man);        //生成多个代理类对象,为不同的目标对象服务
        PersonProxy womanProxy = new PersonProxy(women);
        PersonProxy oldManProxy = new PersonProxy(oldMan);
        manProxy.say();
        womanProxy.say();
        oldManProxy.say();

      /*  运行结果:   男人赚钱养家
                    0
                    买衣购物
                    0
                    干农活
                    0*/
    }
}


   

Supongo que te gusta

Origin blog.csdn.net/Qmilumilu/article/details/104623583
Recomendado
Clasificación