자기 이해-관찰자(Observer)모드
관찰자(Observer)모드 도 게시 구독 모드 가 될 수 있 습 니 다.이 모드 는 대상 간 의 모드 이 고 대상 간 에 한 쌍 이상 의 관 계 를 나 타 냅 니 다.그 중 하 나 는 피 관찰자 이 고 대부분 관찰자 이기 때문에 피 관찰 자 는 여러 개의 대상 을 만 들 지 못 하고 한 개의 대상 만 관찰자 가 관찰 할 수 있 기 때문에 피 관찰 자 를 쓸 때 단일 모델 로 사용 해 야 한다.
코드 이해
그러면 우 리 는 코드 를 통 해 관찰자 모델 을 직관 적 으로 이해 할 수 있다.
package observer;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
// --
public class Products extends Observable {
//
private List proList = null;
private static Products instance;
// ( )
private Products() {
}
// -
public static Products getInstance() {
if(instance == null) {
instance = new Products();
instance.proList = new ArrayList<>();
}
return instance;
}
/**
* ( )
* @param observer
*/
public void addProductsObserver(Observer observer) {
this.addObserver(observer);
}
/**
* ( )
* @param newProduct
*/
public void addProduct(String newProduct) {
if(newProduct==null || "".equals(newProduct)) {
System.out.println(" !");
}else {
System.out.println(" :"+proList.size()+" !");
//
proList.add(newProduct);
System.out.println(" :"+newProduct);
System.out.println(" :"+proList.size()+" !");
// ( , )
this.setChanged();
// ,
this.notifyObservers(newProduct);
}
}
}
package observer;
import java.util.Observable;
import java.util.Observer;
// 1-
public class JDObserver implements Observer {
/**
*
* 1.Observable
* 2.product
*/
@Override
public void update(Observable o, Object product) {
Products pro = (Products) o;
System.out.println(" :"+ pro);
String newProduct = (String) product;
System.out.println(" 【"+newProduct+"] !");
}
}
package observer;
import java.util.Observable;
import java.util.Observer;
//
public class TaoBaoObserver implements Observer {
/**
*
* 1.Observable
* 2.product
*/
@Override
public void update(Observable o, Object product) {
Products pro = (Products) o;
System.out.println(" :"+ pro);
String newProduct = (String) product;
System.out.println(" 【"+newProduct+"] !");
}
}
결과 테스트
결과 전시 에서 우 리 는 목록 에 제품 을 추가 한 다음 에 관찰자 와 피 관찰자 간 의 변 화 를 관찰 하고 실행 코드 는 다음 과 같은 결 과 를 얻 을 수 있다.
제품 추가:
제품 이 비어 있 음:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 관찰자 모드 쉽게 파악정의: 객체 간에 일대다 관계가 있을 때 관찰자 모드(Observer Pattern)를 사용합니다.예를 들어 대상이 수정되면 의존 대상을 자동으로 알려준다. 특징: 1. 관찰자와 피관찰자는 추상적인 결합이다. 2. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.