7. Subprocesamiento múltiple (modo proxy estático (implemente la interfaz Runnable para crear subprocesos))

Subprocesamiento múltiple (modo proxy estático (implemente la interfaz Runnable para crear subprocesos))

  1. Tanto el objeto real como el objeto proxy deben implementar la misma interfaz
  2. Objetos proxy para actuar en nombre de objetos reales
  3. Pros: los objetos proxy pueden hacer cosas que los objetos reales no pueden

         Los objetos reales se centran en su propio negocio.

Ejemplo: La forma en que aprendimos anteriormente a implementar la interfaz Runnable para crear subprocesos utiliza el modo proxy (al crear en el subproceso principal), es decir

Thread(raza, "conejo").start.

Aquí Thread (que implementa la interfaz Runnable) y la carrera implementan la interfaz Runnable. Entonces Thread es el proxy, y la carrera en él es el objeto de destino (se está enfocando en su método de ejecución reescrito, no puede iniciar el hilo con .start), así que use el proxy de Thread para comenzar el hilo con .start ().

 

 

Ejemplo de matrimonio:

 

Pensemos en ello aquí:

  1. Las clases You y Wed aquí implementan la interfaz Marry. Hay un método abstracto HappyMarry en la interfaz. Usted es el objeto real, Wed es el objeto proxy (él necesita pasar un objeto real, aquí está el objetivo (el método de construcción le pasa parámetros)) Wed ha completado muchos métodos que no están allí.

 

 

 

 

package org.example;

import sun.rmi.runtime.NewThreadAction;

public class StaticProxy {
    public static void main(String[] args) {
        You you = new You();
//        new Thread(new Runnable(){
//            @Override
//            public void run() {
//            }
//        }).start();
        //这里的Lambda表达式省略了中间的那个Runnable
        new Thread(()->System.out.println("我爱你")).start();
        //与上面比较是不是很相近
        new WeddingCompany(new You()).happyMarry();
//        WeddingCompany weddingCompany = new WeddingCompany(you);
//        weddingCompany.happyMarry();
    }
}
//共同实现的接口
interface Marry{
    void happyMarry();
}
//真实对象,你去结婚
class You implements Marry{

    @Override
    public void happyMarry() {
        System.out.println("You准备结婚了");
    }
}
//代理对象,帮助你结婚
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("收尾款,完成婚礼");
    }

}

Supongo que te gusta

Origin blog.csdn.net/logtcm4/article/details/127329612#comments_27041755
Recomendado
Clasificación