디자인 모드--자바 내 장 된 관찰자 모드 사용(Observer Pattern)
2507 단어 디자인 모드
자바 에 서 는 관찰 자 모드 를 실현 하기 위해 Observerable 류 와 Observer 인 터 페 이 스 를 제공 합 니 다.
JAVA 에 내 장 된 Observer 류 는 좋 은 디자인 이 아니다.우선,Observable 은 하나의'클래스'이기 때문에 하나의 클래스 를 설계 하여 계승 해 야 한다.만약 에 Observable 류 와 다른 초 류 를 동시에 가 지 려 고 한다 면 딜레마 에 빠 질 것 이다.이것 은 Observable 의 재 활용 잠재력 을 제한 했다.그 다음으로 Observable 은 관건 적 인 방법 인 setChange()방법 을 보호 합 니 다.이것 은 Observable 에서 계승 하지 않 으 면 Observable 인 스 턴 스 를 만 들 고 자신의 대상 에 조합 할 수 없습니다.이 디자인 은 두 번 째 디자인 원칙 인'조합 을 많이 사용 하고 계승 을 적 게 사용 합 니 다'를 위반 한 것 을 의미 합 니 다.
1.피 관찰자 계승 observable
public class WeatherData extends Observable {
private float temperature; //
private float humidity; //
private float pressure; //
public WeatherData() {}
public void measurementsChanged() {
setChanged();
notifyObservers();
}
public void setMeasurements(float temperature, float humidity,
float pressure) {
this.temperature = temperature;
this.humidity = humidity;
this.pressure = pressure;
measurementsChanged();
}
public float getTemperature() {
return temperature;
}
public float getHumidity() {
return humidity;
}
public float getPressure() {
return pressure;
}
}
2,관찰자 구현 Observer 인터페이스
public class CurrentConditionsDisplay implements Observer, DisplayElement {
private float temperature;
private float humidity;
private float pressure;
private Observable observable;
public CurrentConditionsDisplay(Observable observable) {
this.observable = observable;
this.observable.addObserver(this);
}
@Override
public void display() {
System.out.println("Current conditions:" + temperature
+ "F degrees and " + humidity + "% humidity " + pressure
+ " pressure");
}
@Override
public void update(Observable obs, Object arg) {
if(obs instanceof WeatherData){
WeatherData weatherData = (WeatherData) obs;
this.humidity = weatherData.getHumidity();
this.temperature = weatherData.getTemperature();
display();
}
}
}
3.테스트 클래스
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
WeatherData wd = new WeatherData();
CurrentConditionsDisplay ccd = new CurrentConditionsDisplay(wd);
wd.setMeasurements(21, 13, 30.4f);
wd.setMeasurements(1, 2, 3f);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.