Daily coding

Java Basic : day 13 - Observer Pattern 옵저버 패턴 본문

Language/Java_basic

Java Basic : day 13 - Observer Pattern 옵저버 패턴

sunnnkim 2019. 12. 4. 20:47

Observer Pattern

 

: 정찰 -> 감시
 
 
  <예시>
  MyClass 감시해야할 클래스
  ObserverA, B : 감시자
 

 

// 감시 해야할 클래스 : extends Observable 

public class MyClass extends Observable {


       private String priArg = null;


       // 일반 메소드 정의하기

 

       // 변경사항이 있을 때 Observer 클래스에 알려주는 메소드
       @Override
       public void notifyObservers(Object arg) {  arg <---- 변경사항

              String str = (String)arg;

              // 변화가 없을 때 메소드 종료
              if(str.equals(priArg)) return;

              // 변화가 있을 때(데이터가 변화됨)
              priArg = str;
              setChanged();

              // reset에 해당 됨

              super.notifyObservers(arg);
              clearChanged();  
       }
}

 

 

감시자 클래스

  : 데이터 변경을 놓칠 수도 있으니 2개정도 만든다.


public class ObserverA implements Observer {

        @Override
        public void update(Observable o, Object arg) {
                String str = (String) arg;
                System.out.println("감시자 A 입니다. 통지를 받았음 : " + str);
        }
}

public class ObserverB implements Observer { 

        @Override 
        public void update(Observable o, Object arg) { 
                String str = (String) arg; 
                System.out.println("감시자 B 입니다. 통지를 받았음 : " + str); 
        } 
}

 

 

 

 

 

< Main Class >

 

 


MyClass cls = new MyClass( );

 


// 감시자 A, B를 추가
cls.addObserver(new ObserverA());
cls.addObserver(new ObserverB());

cls.notifyObservers("password:abc123");


}

}