patrón de diseño java - observador
//Asunto java
Paquete modo youngmaster Observador
/**
* @author youngmaster
* @E mail young * @version myEclipse
* @create time mañana:
*/**
/**
/**
* El patrón observador es un patrón de comportamiento cuyo propósito es definir dependencias de uno a muchos entre objetos
* Cuando El estado de un objeto cambia, todos los objetos que dependen de él cambiarán. Cuando el estado de un objeto cambia, todos los objetos que dependen de él son notificados y actualizados automáticamente
* En el proceso de creación de un sistema, un efecto secundario común es dividir el sistema en una serie de clases cooperativas
* Necesidad de mantener la coherencia entre objetos relacionados. No queremos unir clases estrechamente para mantener la coherencia
* Porque esto reducirá su disponibilidad
* Debido a En este caso, el objeto clave del patrón es la meta (propósito), es decir, lo que el objeto está tratando de lograr, o el objeto que está tratando de lograr la meta. Los objetos clave de este modo son objetivos y observadores
* Un objetivo puede tener cualquier número de observadores dependiendo de él. Una vez que el estado del objetivo cambie, todos los observadores serán notificados
. * En respuesta a esta notificación, cada observador consultará el objetivo para sincronizar su estado con el estado del objetivo. Esta interacción también se denomina patrón de publicación-suscripción.
* El objetivo es el editor de la notificación. Cuando envía la notificación, no necesita saber quiénes son sus observadores. Cualquier número de observadores puede suscribirse y recibir notificaciones.
*/
/**
* Asunto
* Interfaz de destino
*/
interfaz pública Asunto {
public void addObserver(Observador o
public void deletObserver(Observador o
public void Notice()); ;
}
//Observador java
paquete youngmaster modelo Observador
/**
* @author youngmaster
* @E mail: young * @version myEclipse
* @create time mañana: :
*/
/**
* Interfaz de observador
*/
interfaz pública Observador {
actualización pública vacía ();
}
// Profesor java
paquete youngmaster model Observer
importar java util Vector
;/**
* @author youngmaster
* @E mail:young * @version myEclipse
* @create time mañana : : p>
*/
/**
* Implementación de la interfaz de destino
*/
clase pública El profesor implementa el Asunto {
teléfono de cadena privada
@SuppressWarnings (sin marcar)
estudiantes de Vector privado
@SuppressWarnings (sin marcar)
profesor público() {
teléfono = ;
estudiantes = nuevo vector();
}
@SuppressWarnings( sin marcar)
@Override
public void addObserver(Observador o) {
estudiantes agregan(o); >
@ Anular
public void deletObserver(Observador o) {
estudiantes remove(o); Anular
aviso de vacío público() {
for (int i = ; i lt; tamaño de los estudiantes(); i ) { ((Observador) los estudiantes obtienen (i)) actualización(); }
}
public void setPhone(String phone) {
este teléfono = teléfono
aviso()
}
public String getPhone() {
devolver teléfono
}
}
}
// Estudiante java
paquete youngmaster modelo Observer
/**
* @author youngmaster
* @E mail: young * @version myEclipse
* @create time mañana: :
*/
/**
* Implementación de la interfaz de Observer
*/
clase pública Estudiante implementa Observer {
nombre de cadena privada
teléfono de cadena privada; ;
profesor profesor privado;
estudiante público (nombre de cadena profesor profesor) { este nombre = nombre este profesor = profesor
}
public void show() {
Sistema fuera println( Nombre: nombre \nTeléfono del profesor: teléfono
}
@Override ); p>
public void update() {
teléfono = profesor getPhone();
}
}
// Cliente java
paquete youngmaster model Observer
import java util Vector
/**
* @author youngmaster
* @E mail: young * @version myEclipse
* @create time mañana: :
*/
/**
* Clase de prueba
*/
clase pública Cliente {
/**
* @param args p>
*/
@Suppre
ssWarnings( sin marcar )
public static void main(String[] args) {
Vector estudiantes = new Vector()
profesor profesor = nuevo profesor( );
for (int i = ; i lt; ; i ) {
estudiantes estudiante = nuevo Estudiante(estudiante i profesor); estudiantes agregar(estudiante profesor addObserver);
}
setPhone del profesor( );
for (int i = ; i lt; ; i )
(( Estudiante) los estudiantes obtienen(i)) show();
Sistema fuera println(\n========================= = ===\n );
setPhone del profesor( );
for (int i = ; i lt; ; i )
((Estudiante) los estudiantes obtienen(i)) show();
} lishixinzhi/Article/program/Java/gj/201311/27566