Observer in Java 2

2016.05.30 21:04

졸리운_곰 조회 수:80

 

Observer in Java 2

Observer design pattern

  1. Model the "independent" functionality with a "subject" abstraction
  2. Model the "dependent" functionality with "observer" hierarchy
  3. The Subject is coupled only to the Observer base class
  4. Observers register themselves with the Subject
  5. The Subject broadcasts events to all registered Observers
  6. Observers "pull" the information they need from the Subject
  7. Client configures the number and type of Observers
abstract class Observer { 
protected Subject subj; 
  public abstract void update();
}

class HexObserver extends Observer { 
  public HexObserver( Subject s ) { 
    subj = s; 
    subj.attach( this ); 
  }

  public void update() { 
  System.out.print( " " + Integer.toHexString( subj.getState() ) ); 
  } 
} // Observers "pull" information 

class OctObserver extends Observer { 
  public OctObserver( Subject s ) {
    subj = s;
    subj.attach( this );
  } 
  public void update() {
    System.out.print( " " + Integer.toOctalString( subj.getState() ) );
  } 
} // Observers "pull" information 

class BinObserver extends Observer { 
  public BinObserver( Subject s ) { 
    subj = s; 
    subj.attach( this ); } // Observers register themselves 
    public void update() { 
    System.out.print( " " + Integer.toBinaryString( subj.getState() ) ); 
  } 
}

class Subject { 
  private Observer[] observers = new Observer[9];
  private int totalObs = 0;
  private int state;
  public void attach( Observer o ) {
    observers[totalObs++] = o;
  }

  public int getState() {
    return state;
  }
  
  public void setState( int in ) {
    state = in;
    notify();
  }

  private void notify() {
    for (int i=0; i < totalObs; i++) {
      observers[i].update();
    }
  }
}

public class ObserverDemo {
  public static void main( String[] args ) {
    Subject sub = new Subject();
    // Client configures the number and type of Observers
    new HexObserver( sub );
    new OctObserver( sub );
    new BinObserver( sub );
    Scanner scan = new Scanner();
    while (true) {
      System.out.print( "\nEnter a number: " );
      sub.setState( scan.nextInt() );
    }
  }
}

Output

Enter a number: 15
  f  17  1111
Enter a number: 17
  11  21  10001
Enter a number: 31
  1f  37  11111

 

[출처] https://sourcemaking.com/design_patterns/observer

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
458 RESTful API를 설계하기 위한 디자인 팁 졸리운_곰 2016.08.09 88
457 무료로 배우는 공부 및 강좌 사이트 모음 정리 file 졸리운_곰 2016.08.07 973
456 Sending and Receiving Binary Data 졸리운_곰 2016.08.06 83
455 Sending binary data along with a REST API request 졸리운_곰 2016.08.06 147
454 BSON 이해하기 졸리운_곰 2016.08.06 94
453 칸반과 큰 시각화 차트(Kanban Boards and Big Visible Charts) file 졸리운_곰 2016.07.19 350
452 [번역] 잘 가요 스크럼, 반가워요 칸반 file 졸리운_곰 2016.07.19 97
451 개인 Todo List를 애자일로 실행하기 file 졸리운_곰 2016.07.19 156
450 [펌] 만화로 보는 칸반보드 file 졸리운_곰 2016.07.19 3670
449 HTTP 프로토콜 집중탐구[1] 졸리운_곰 2016.07.18 477
448 HTTP 프로토콜 분석 file 졸리운_곰 2016.07.18 127
447 머신러닝 튜토리얼 총모음 : Machine Learning & Deep Learning Tutorials 졸리운_곰 2016.06.11 903
446 network based software design.pdf file 졸리운_곰 2016.06.06 119
445 What Is WP-AppKit? file 졸리운_곰 2016.06.01 134
444 Design Pattern 정리 (헤드퍼스트 디자인 패턴) file 졸리운_곰 2016.05.30 222
443 ontology tool 온톨로지 툴 스탠퍼드 오픈소스 졸리운_곰 2016.05.30 105
442 온톨로지와 추론 2011.06.29 file 졸리운_곰 2016.05.30 206
441 OWL 웹 온톨로지 언어 개요 file 졸리운_곰 2016.05.30 362
» Observer in Java 2 졸리운_곰 2016.05.30 80
439 Observer in Java 졸리운_곰 2016.05.30 160
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED