본문 바로가기
728x90

분류 전체보기163

[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.
[Java 언어로 배우는 디자인 패턴 입문] 구조를 돌아다니기 14. Chain of Responsibility 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 14. Chain of Responsibility - 책임 떠넘기기 1. 목적 - 클래스들을 사슬처럼 연결해두고 자기가 처리하지 못할 경우 다음 클래스로 떠넘긴다. - 원하는대로 연결하여 동적으로 만들 수 있다. - 각 클래스들은 자신의 일에 집중할 수 있다. - 처리 속도가 느려지는 단점이 있다. - 자기 자신안에 자기와 같은 타입의 인스턴스를 저장한다. 2. 예제 (1) Trouble - 처리가 필요한 문제 public class Trouble { private int number; // 트러블 번호 public Trouble(int number) { // 트러블의 생성 this.number = number; } public int getNum.. 2021. 1. 12.
[Java 언어로 배우는 디자인 패턴 입문] 구조를 돌아다니기 13. Visitor 출처 : 책 - java 언어로 배우는 디자인 패턴 입문 13. Visitor - 데이터 구조를 돌아다니면서 처리하기 1. 목적 - 말 그대로 데이터 구조를 방문(visit)하기 위한 패턴이다. - 재귀가 활용된다. Ex) List = { L1, L2 } 라고하면 List가 visitor를 받아들이면 visitor는 List 내부를 돌며 L1, L2도 자신을 받아들이게 한다. List(visitor) -> L1(visitor), L2(visitor) 2. 예제 - 이전 Composite 패턴 예제가 사용된다. (1) Visitor - 구현을 위한 부모 추상클래스. visit 메소드를 가지고 있다. public abstract class Visitor { public abstract void visit(F.. 2021. 1. 11.
728x90