[Design Pattern] 옵저버 패턴(Observer)
13552 단어 Design PatternDesign Pattern
Observer Pattern
📌 상태가 변경되면 그 상태 변경에 따라 반응하는 구조를 구현하기 위한 패턴
📌 상태가 변경되면 그 상태 변경에 따라 반응하는 구조를 구현하기 위한 패턴
observing할 메소드를 담고 있는(?) 추상클래스를 정의한다.
//Player.java public abstract class Player { private final String name; public Player(String name) { this.name = name; } public String getName() { return name; } public abstract void update(int n); }
추상클래스를 상속받는 구체적인 구현클래스를 생성한다.
//OddBettingPlayer.java public class OddBettingPlayer extends Player { public OddBettingPlayer(String name) { super(name); } @Override public void update(int n) { if (n % 2 == 1) { System.out.println(getName() + " win!"); } } } //EvenBettingPlayer.java public class EvenBettingPlayer extends Player { public EvenBettingPlayer(String name) { super(name); } @Override public void update(int n) { if (n % 2 == 0) { System.out.println(getName() + " win!"); } } }
play를 하면서 데이터 변경을 통보한다.
//DicePlay.java public class DicePlay { private final LinkedList<Player> players = new LinkedList<Player>(); private final Random random = new Random(); public void addPlayer(Player player) { players.add(player); } public void play() { int v = random.nextInt(6) + 1; System.out.println("Dice Number: " + v); for (Player player : players) { player.update(v); } } } //Main.java public class Main { public static void main(String[] args) { DicePlay dicePlay = new DicePlay(); Player player1 = new EvenBettingPlayer("Jane"); Player player2 = new OddBettingPlayer("Suji"); dicePlay.addPlayer(player1); dicePlay.addPlayer(player2); for (int i = 0; i < 10; i++) { dicePlay.play(); System.out.println(); } } }
🙌 클래스나 객체에 의존하지 않고 데이터 변경을 통보할 수 있다.
Author And Source
이 문제에 관하여([Design Pattern] 옵저버 패턴(Observer)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ditt/Design-Pattern-옵저버-패턴Observer저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)