Sponsored By
















내장기능을 이용한 옵저버패턴(Observer Pattern) 을 알아보자.

 

 

기본 코드는 내장기능을 이용하지 않은 이전 포스팅을 참고하자.

 

 

※. 참고 주소 : 

https://asterisco.tistory.com/202

 

[ JAVA/ 자바/ 패턴] Observer Pattern/ 옵저버패턴/ Observer패턴/ 옵저버 Pattern/ 자바패턴/ 패턴/ 자바/ 옵저버

옵저버패턴(Observer Pattern) 에 대해 알아보겠다. 옵저버 패턴은 Subject에서 각 객체(옵저버)들을 조절하며 데이터를 변경하거나 옵저버들을 추가 또는 제거등을 할 수 있는 기능이다. 00. Subject 인터페이스..

asterisco.tistory.com

 

 

01. WeatherData 의 import 두개를 추가하고 Observable 을 상속받고 내용을 조금 수정하자.







02. CurrentConditionsDisplay 클래스의 import를 넣고 Observer 를 다중 상속 받고 내용을 적절하게 수정하자.







03. 실행하면 결과는 같게 나온다.

 

 

 

 

 

 

 

 

 

 

******************** CurrentConditionsDisplay CLASS

 

package kr.or.komca.smin;

 

import java.util.Observable;

import java.util.Observer;

 

public class CurrentConditionsDisplay implements Observer, DisplayElement{

 

Observable observable ;

private float temperature;

private float humidity;

 

 

public CurrentConditionsDisplay(Observable observable){

this.observable = observable;

observable.addObserver(this);

 

}

 

@Override

public void update(Observable obs, Object arg){

 

if( obs instanceof WeatherData ){

WeatherData weatherData = (WeatherData) obs;

this.temperature = weatherData.getTemperature();

this.humidity = weatherData.getHumidity();

display();

}// if

 

}// update

 

@Override

public void display() {

// 변수에 저장된 값을 나타내어 준다.

System.out.println("Current conditions : " + temperature + " F degree and " + humidity + " % humidity");

}

 

}// MAIN

 

 

 

 

 

 

 

 

******************** WeatherData CLASS 

package kr.or.komca.smin;

 

import java.util.ArrayList;

import java.util.Observable;

import java.util.Observer;

 

public class WeatherData extends Observable{

 

private ArrayList observers;

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; }

 

 

}//MAIN

 

 

 

 

 



Sponsored By















+ Recent posts