본문 바로가기
728x90

개발/디자인 패턴22

[Java 언어로 배우는 디자인 패턴 입문] 상태를 관리하기 18. Memento 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 18. Memento - 상태를 저장하기 1. 목적 - 말 그대로 현재 상태를 저장하는 구조이다. - 유의해서 볼 점은 상태를 저장한 클래스의 메소드에 public이 없다는 점이다.(예제에서는 1개만 있음) 은닉하기 위함. - 의의 : 저장한 상태를 따로 분리함으로써, 저장한 상태를 파일로 만드는 작업등을 추가로 할 때 오리지날 클래스는 건드리지 않도록 유지할 수 있다. 2. 예제 (1) Memento - 상태 저장. getMoney 메소드만 public 선언이 되어있다. (정보 은닉) 같은 패키지인 Gamer 클래스에서만 Memento 메소드를 사용할 수 있고, Main에서는 호출할 수 없다. package game; import java.uti.. 2021. 1. 15.
[Java 언어로 배우는 디자인 패턴 입문] 상태를 관리하기 17. Observer 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 17. Observer - 중개인을 통해서 처리하기 1. 목적 - MVC 패턴에서 Model과 View의 관계는 Subject(Model)과 Observer(View) 대응한다. - Mediator과 Observer 패턴은 비슷하지만, Mediator 패턴은 Colleague(Subject) 1개의 변화가 Mediator(Observer)를 통해 다수의 Colleague를 조정하기 위함이고 Observer 패턴은 Subject 1개의 변화가 다수의 Observer에게 알려서 동기화를 이루는 것이 핵심이다. - Subject의 상태가 변화 - Observer 메소드 호출의 형태 - Subject 클래스 속 Observer 인스턴스는 여러 종류 Obs.. 2021. 1. 14.
[Java 언어로 배우는 디자인 패턴 입문] 단순화하기 16. Mediator 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 16. Mediator - 중개인을 통해서 처리하기 1. 목적 - A 클래스, B클래스, C클래스 가 서로 얽혀 있는 경우 클래스의 상관 관계가 복잡해진다. - M(Mediator) 클래스를 만들어서 A,B,C 클래스의 정보를 M 클래스로 모은 다음 M클래스가 A, B, C를 제어한다. 구체적인 방법으로, M클래스 안에 A, B, C 클래스의 인스턴스를 만들고, A, B, C가 변할때마다 M 클래스의 특정 로직 메소드를 호출한다. 이 메소드가 A, B, C의 상태를 재정의한다. - 새로운 D 클래스가 추가 되었을 때 중재자 M 클래스는 재사용하기 어렵다. 로직이 몰려 있는 M 클래스에 D로직이 추가되기 때문이다. 하지만 로직이 M 클래스에 있는 덕.. 2021. 1. 13.
[Java 언어로 배우는 디자인 패턴 입문] 단순화하기 15. Facade 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 15. Facade - 단순한 창구 1. 목적 - 상호 관련된 많은 클래스들을 적절하게 제어하기 위해 API(창구)같은 클래스가 필요하다. - 똑같이 반복되는 복잡한 내부를 보기 좋게 감추기 위함이다. - facade는 프랑스어에서 나온 말로 건물의 정면 이라는 의미이다. - 개발자라면 한번정도는 해본 적 있을 디자인 패턴이다. 2. 예제 (1) Database package pagemaker; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class Database { private Database() { } public .. 2021. 1. 12.
728x90