Introducción al modo de observador

Hay cuatro objetos en el modo de observador:
(1) Objeto fuente de evento: el objeto capaz de evento (uno o más eventos (conjunto de eventos))
(2) Objeto de evento: la información de la escena del evento en la fuente del evento
(3) Objeto de procesamiento de eventos (interfaz): el objeto delegado al procesamiento
(4) Observador: la clase de implementación / manejador La
fuente del evento debe incluir:
1. Lista de oyentes privada
2. Método público para agregar oyentes a la lista de oyentes
3. Método de hacer cosas (método de evento),

por ejemplo: si hay una chica muy hermosa (objeto fuente de evento), la chica generalmente tiene muchas cosas, tendrá sed por un tiempo, hambre por un tiempo, infeliz por un tiempo, etc. (objeto de evento), en este momento, hay muchos chicos que quieren perseguir a esta chica, luego el otro es (observador / procesador / realización), porque quieres perseguir a la gente, entonces tienes que observar a esta chica todo el tiempo, la gente tiene hambre, rápidamente compras una parte La comida le fue enviada. Pero esta chica también dijo que solo un chico guapo puede perseguirme, de lo contrario, ¿cómo puede igualar su apariencia incomparable, guapo es este objeto de procesamiento de eventos (interfaz), tú debe cumplir con este requisito para perseguir a la gente ¡Está bien, de lo contrario la gente te ignorará! Esta chica tiene un pequeño cuaderno (lista de oyentes privada), que registra a todos los chicos que cumplen con sus requisitos para hacer cosas por ella (esto es porque es tímida y no quiere que los demás sepan todo Es privado), tienes que dejar que el chico te confiese, si hay un chico calificado para confesar, la chica escribe su nombre en su cuaderno, (el método público de agregar un oyente a la lista de oyentes), chica al final ¿Tiene sed, hambre o es infeliz (método de hacer las cosas (método de evento))
La esencia del modo de observador es: enlace de activación
Ventajas:

  1. El modo de observador se da cuenta del acoplamiento abstracto entre el observador y el objetivo;

  2. El modo de observador se da cuenta de la vinculación dinámica

  3. Los soportes modo espectador transmiten la comunicación.
    Por favor, vea esta aplicación de código siguiente: (Si son competentes, escribir de forma casual, sin ningún orden se recomiendan los principiantes a escribir la sintonía (objeto sintonizado por otros) en primer lugar, y escribir la melodía principal.)
    (1 ) GirlEvent (objeto de evento)

       public class GirlEvent {
    //只读,只有构造的时赋值,没set方法
    	private String eventString = null;
    	public GirlEvent() {
    		// TODO Auto-generated constructor stub
    	}
    	public GirlEvent(String eventString) {
    		this.eventString = eventString;
    	}
    	public String getEventString() {
    		return eventString;
    	}
    }
    

    (2) GirlListener (interfaz de escucha de eventos)

    public interface GirlListener {
    //传GirlEvent 因为我们男生要根据女孩所发生的事件做事情,饿了送吃的,不开心了哄开心
    	public void doSomething(GirlEvent e);
    }
    

(3) Chica (fuente del evento)

public class Girl {
//列表都是女孩认为可以追求她的男孩(接口:可以为她做事情)
	private List<GirlListener> list = new ArrayList<GirlListener>();
	
	public void addGrilListener(GirlListener listener) {
		this.list.add(listener);
	}
	
	public void GrilAction(String actionString) {
	//将她饿了不开心了首先封装成事件对象
		GirlEvent e = new GirlEvent(actionString);
		//此时,女孩说,让我看看我的小本本上的这几个人到底为不为我做事情
		for (GirlListener girlListener : list) {
			girlListener.doSomething(e);
		}
	}
}

(4) Procesador
1. ABoy (niño estadounidense) necesita implementar GirlListener, que debe cumplir con los requisitos de las niñas

public class ABoy implements GirlListener {

	@Override
	public void doSomething(GirlEvent e) {
		if("饿了".equals(e.getEventString())) {
			System.out.println("送来了汉堡包!");
		} else if("不高兴了".equals(e.getEventString())) {
			System.out.println("带你去迪士尼");
		}
	}
}
  1. CBoy (niño chino) quiere implementar GirlListener, es decir, para cumplir con los requisitos de las niñas

    clase pública CBoy implementa GirlListener {

     @Override
     public void doSomething(GirlEvent e) {
     	if("饿了".equals(e.getEventString())) {
     		System.out.println("送来了三秦套餐!");
     	} else if("不高兴了".equals(e.getEventString())) {
     		System.out.println("带你去看天安门");
     	}
     }
     }
    
  2. KBoy (niño coreano) quiere implementar GirlListener, que es para cumplir con los requisitos de las niñas

    KBoy de clase pública implementa GirlListener {

     @Override
     public void doSomething(GirlEvent e) {
     	if("饿了".equals(e.getEventString())) {
     		System.out.println("送来了泡菜!");
     	} else if("不高兴了".equals(e.getEventString())) {
     		System.out.println("带你去看星星");
     	}
     }
    

    )
    (5) Clase de ejecución (clase de prueba)
    Clase de ejecución:

         public class Run {
     		public static void main(String[] args) {
     			//事件源实例
     			Girl wt = new Girl();
     			//监听者接口实现类的实例
     			CBoy xc = new CBoy();
     			KBoy jxx = new KBoy();
     			ABoy stl = new ABoy();
     			//让事件源添加监听者接口实现类的实例
     			wt.addGrilListener(xc);
     			wt.addGrilListener(jxx);
     			wt.addGrilListener(stl);
     			//女孩锁事来了
     			wt.GrilAction("饿了");
     			wt.GrilAction("不高兴了");
     		}
     	}
    

¡Un ensayo!

Supongo que te gusta

Origin blog.csdn.net/lq1759336950/article/details/98180851
Recomendado
Clasificación