디자인 패턴 4

옵저버 패턴(Observer Pattern)

옵저버 패턴이란? 객체의 상태 변화를 관찰하는 관찰자들 즉, 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 어떤 객체의 변경 사항이 발생하였을때 이와 연관된 객체들에게 알려주는 디자인 패턴이라고 생각하면 된다. 다수의 객체가 특정 객체 상태 변화를 감지하고 알림을 받는 패턴 발행(publish) - 구독 (subscribe) 패턴을 구현할 수 있다 옵저버 패턴 사용 예제 공지사항을 알리때를 예제로 공지사항을 전파할때(상태변환) 옵저버와 관련된 객체들(유저들)에게 통지하도록 하는 간단한 예제를 옵저버 패턴으로 만들어보도록 하겠다. Observer.class public class Observer { public..

디자인패턴 2022.10.08

메멘토 패턴(Memento Pattern)

메멘토 패턴이란? 객체의 상태 정보를 저장하고 사용자의 필요에 의하여 원하는 시점의 데이터를 복원 할 수 있는 패턴을 말한다. 구조 Originator : 우리가 저장할 객체이다. 즉 originator의 state를 저장할 것이다 Care Taker : originator의 내부 정보를 Care Taker가 가져와서 저장한다 Memento : 내부정보를 추상화한 클래스. Care Taker는 Originator의 디테일한 정보를 직접적으로 가지는 것이 아니라 memento타입으로 가진다. 예제 코드 만약 게임을 하는데. 게임을 중지시켰다가 다시 실행해도 중지 전까지 스코어는 유지되어야 한다. @Getter @Setter public class Game { private int redTeamScore; ..

디자인패턴 2022.10.08

커맨드 패턴 (Command Pattern)

커맨드 패턴 이란? Client가 보낸 요청을 객체로 캡슐화하여 이를 나중에 이용할 수 있도록 필요한 정보를 저장, 로깅, 취소할 수 있게 하는 패턴 요청을 캡슐화 하여 호출자(invoker)와 수신자(reveiver)를 분리하는 패턴이다. - 요청을 처리하는 방법이 바뀌더라도, 호출자의 코드는 변경되지 않는다 구성요소 1. 수신자(Receiver) : 행동을 담당하는 객체 -> 기능을 수행 2. 커맨드(Command) : 수신자의 정보 + 행동이 들어있는 객체 3. 호출자(invoker) : 커맨드를 저장하는 객체 -> 버튼이 어떤 수행을 할 것인지 결정 4. 클라이언트(Client) : 커맨드 객체를 생성하고, 호출자를 통해 수신자에게 할 행동을 결정 예제 코드 1.Button, MyApp 호출자 (..

디자인패턴 2022.10.08

책임 연쇄 패턴(Chain of Responsibility Pattern)

책임 연쇄 패턴이란? 요청을 보내는 쪽(sender)과 요청을 처리하는(receiver) 쪽을 분리하는 패턴이다. 핸들러 체인을 사용해서 요청을 처리한다. 클라이언트로부터의 요청을 처리할 수 있는 처리 객체를 Chain으로 만들어 결합을 느슨하게 하기 위해 만들어진 패턴이다. 일반적으로 요청을 처리할 수 있는 객체를 찾을 때까지 집합 안에서 요청을 전달한다. 예제 코드 public abstract class Handler { public String name; private Handler next; public Handler(String name) { this.name = name; } public void setNext(Handler next) { this.next = next; } public voi..

디자인패턴 2022.10.08