디자인 모델 의 2 - 관찰자 모델
3928 단어 관찰자 모드
1 테마 인터페이스
package com.observer;
/***
*
* @author shasha
*
*/
public interface Subject {
public void registObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObservers();
}
2 일기예보 테마 (테마 인터페이스 구현)
package com.observer;
import java.util.ArrayList;
/**
*
* @author shasha
* ---
*/
public class WeatherData implements Subject {
private ArrayList<Observer> observers;
private float temperature;
private float humidity;
private float pressure;
public WeatherData(){
observers=new ArrayList<Observer>();
}
@Override
public void notifyObservers() {
// TODO Auto-generated method stub
for(int i=0;i<observers.size();i++){
Observer observer=observers.get(i);
observer.update(temperature, humidity, pressure);
}
}
@Override
public void registObserver(Observer o) {
// TODO Auto-generated method stub
observers.add(o);
}
@Override
public void removeObserver(Observer o) {
// TODO Auto-generated method stub
int i=observers.indexOf(o);
if(i>=0){
observers.remove(o);
}
}
public void setMeasurements(float temperature,float humidity,float pressure){
this.temperature=temperature;
this.humidity=humidity;
this.pressure=pressure;
measurementsChanged();
}
public void measurementsChanged(){
notifyObservers();
}
}
3 관찰자 인터페이스
package com.observer;
/**
*
* @author shasha
*
*/
public interface Observer {
public void update(float temp,float humidity,float pressure);
}
4 디 스 플레이 정보 인터페이스
package com.observer;
/***
*
* @author shasha
*
*
*/
public interface DisplayElement {
public void display();
}
5. 관찰자 실현 류 - 일기예보 표시 판
package com.observer;
/***
*
* @author duwan
*
*/
public class CurrentConditionDisplay implements DisplayElement,Observer{
private float temperature;
private float humidity;
private Subject weatherdate;
public CurrentConditionDisplay(Subject weatherdata){
this.weatherdate=weatherdata;
weatherdata.registObserver(this);
}
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("temperature: "+temperature+" F degress and"+humidity+"% humidity");
}
@Override
public void update(float temp, float humidity, float pressure) {
// TODO Auto-generated method stub
this.temperature=temp;
this.humidity=humidity;
display();
}
}
6 테스트 프로그램 기상 관측소
package com.observer;
/**
*
* @author shasha
*
*/
public class WeatherStation {
public static void main(String[] args) {
WeatherData weatherData=new WeatherData();
CurrentConditionDisplay ccd=new CurrentConditionDisplay(weatherData);
weatherData.setMeasurements(80, 65, 30.4f);
}
}
수요
public void measurementsChanged(){ notifyObservers(); }
setChange () 를 추가 하여 자바 util. Observser 와 같이 일정 상황 이 완료 되 어야 관찰 자 를 알 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 관찰자 모드 쉽게 파악정의: 객체 간에 일대다 관계가 있을 때 관찰자 모드(Observer Pattern)를 사용합니다.예를 들어 대상이 수정되면 의존 대상을 자동으로 알려준다. 특징: 1. 관찰자와 피관찰자는 추상적인 결합이다. 2. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.