반응형
SMALL

디자인 패턴 28

[Design Pattern] 플라이급 패턴(Flyweight Pattern)

이번 학습 주제는 플라이급(Flyweight) 패턴입니다 권투에서 가장 체중이 가벼운 체급을 나타내는 플라이급! 플라이급 패턴은 오브젝트를 가볍게 하기 위한 패턴으로 가볍다는 의미는 메모리를 적게 사용하는 것을 의미입니다 다시 말하자면 인스턴스를 가능한 대로 공유시켜서 쓸데없는 인스턴스를 생성하지 않는 것입니다 그럼 플라이급 패턴의 역할들을 정리하겠습니다 역할 설명 Flyweight(플라이급) 공유하는 것이 좋은 것을 나타내는 역할 Flyweight Factory(플라이급 공장) Flyweight 역할을 만들어 인스턴스를 공유 Client(의뢰자) FlyweightFactory 역할을 사용해서 Flyweight 역할을 만들고 이용하는 역할 역할들만 보았을 때는 비교적 간단할 것 같다는 느낌이 스치네요^^..

Java 2020.07.21

[Design Pattern] 상태 패턴(State Pattern)

오랜만에 글을 작성하네요-_- 태안에 조개잡이를 떠났다가 여자친구가 모기에 50방을 물렸네요-_- 모기에게 100% 물리지 않는 어떤 약이나 도구가 발명된다면 대박일듯... 아무튼 이번 학습 주제는 상태(State) 패턴입니다 객체 지향 프로그래밍에서는 프로그램 할 대상을 클래스(Class)로 표현하고 이것을 설계해야합니다 오늘 학습할 상태 패턴은 상태를 클래스로 표현하는 패턴입니다 그럼 상태 패턴의 역할들을 정리하고 시작하겠습니다 역할 설명 State(상태) 상태를 나타내며 상태가 변할 때마다 다른 동작을 하는 인터페이스를 결정 Concrete State(구체적인 상태) 구체적인 각각의 상태를 표현하고 State 역할로 결정되는 인터페이스를 구체적으로 구현 Context(문맥) 현재의 상태를 나타내는 ..

Java 2020.07.20

[Design Pattern] 추억거리 패턴(Memento Pattern)

이번 학습 주제는 추억거리(Memento) 패턴입니다 문서를 작성할 때 필요한 글을 실수로 삭제하게 되면 undo(실행취소) 기능을 사용합니다 객체 지향의 프로그램에서 이 기능을 실행하려면 인스턴스가 가진 정보를 저장해야하고 인스턴스 내부 정보에 접근 가능해야합니다 하지만 접근의 허용은 자칫 캡슐화의 파괴를 초래할 수 있습니다 Memento 패턴은 캡슐화의 파괴에 빠지지 않고도 할 수 있도록 해줍니다 역할 설명 Originator(작성자) 자신의 현재 상태를 저장하고 싶을 때 Memento 역할을 생성하고 이전의 Memento 역할을 전달 받으면 그 Memento 역할을 만든 시점의 상태로 돌리는 처리를 실행 Memento(추억거리) Originator 역할의 내부 정보를 정리하며 그 정보는 비공개함 M..

Java 2020.07.16

[Design Pattern] 관찰자 패턴(Observer Pattern)

한동안 비가 내려 날씨가 꽤 선선하였는데 오늘은 한 여름이었네요 피서의 계절이라 국내 여행지를 찾아보다가 가볼만한 유명지는 모두 꽉차있는 것을 보면 코로나19도 한 여름의 피서를 막지 못하나 봅니다 무튼 이번 학습 주제는 관찰자(Observer) 패턴입니다 스타크래프트 좀 하신 분들은 아주 익숙한 단어 Observer! 스타에서 옵저버가 하는 일은 맵을 밝혀서 우리에게 적의 위치를 알려주는데 이 패턴도 비슷하게 관찰 대상의 상태가 변화하면 관찰자에게 알려줍니다 이번에도 관찰자 패턴의 역할들을 정리하고 시작하겠습니다 역할 설명 Subject(관찰 대상자) 관찰이 되는 대상으로 Observer 역할을 등록, 삭제하는 메소드를 가짐 Concrete Subject(구체적인 관찰자) 구체적으로 관찰되는 대상으로 ..

Java 2020.07.15

[Design Pattern] 창구 패턴(Facade Pattern)과 중개자 패턴(Mediator Pattern)

오늘은 서두 없이바로 학습을 진행하겠습니다이번 학습 주제는창구 패턴(Facade Pattern)과중개자 패턴(Mediator)입니다프로그램을 만들다보면많은 클래스들이 생성되고서로 관계를 맺으면서 복잡해지는데상호 관련된 많은 클래스를적절하게 관리해주는 창구를하나 준비하면 좋을 것입니다창구 패턴은복잡하게 얽혀 있는 것을정리해서 높은 레벨의인터페이스를 제공하는 패턴입니다언제나 처럼창구 패턴의 역할들을정리하고 시작하겠습니다역할설명Facade(창구)시스템을 구성하고 있는 많은 역할에 대한 단순한 창구로서 높은 레벨에서 단순한 인터페이스를 시스템 외부에 제공 (시스템을 구성하는 그 밖의 많은 역할들)이 역할들이 Facade 역할을 호출하는 일은 없고 각각의 임무를 수행Client(의뢰인)Facade 역할을 이용하는..

Java 2020.07.13

[Design Pattern] 책임 떠넘기기 패턴(Chain of Responsibility Pattern)

또 한주가 끝나가네요-_- 다시 월요일... 화이팅..!이번 학습 주제는디자인 패턴 중책임 떠넘기기(Chain of Responsibility) 패턴입니다이 패턴은 어떤 요청이 발생했을 때그 요청을 처리할 오브젝트를직접 결정할 수 없을 경우복수의 오브젝트를 사슬(chain) 처럼 연결하고 그 오브젝트를 차례로 돌아다니면서(방문하면서)목적한 오브젝트를 결정하는 방법입니다 그럼 언제나처럼책임 떠넘기기 패턴의역할들을 정리하고 시작하겠습니다역할설명Handler(처리자)요구를 처리하는 인터페이스를 결정Concrete Handler(구체적인 처리자)요구를 처리하는 구체적인 역할Client(요구자)Concrete Handler 역할에 요구이제 구현을 해보겠습니다1. 클래스(Abstract Class) Trouble...

Java 2020.07.12

[Design Pattern] 방문자 패턴(Visitor Pattern)

이번 학습 주제는 방문자 패턴(Visitor Patter)입니다 방문자 패턴은 방문자를 나타내는 클래스를 준비하고 이 클래스에게 처리를 위임함으로써 데이터 구조와 처리를 분리합니다 먼저 방문자 패턴의 역할들을 정리하고 시작하겠습니다 역할 설명 Visitor(방문자) 데이터 구조의 전체적인 요소마다 visit 메소드 선언 Concrete Visitor(구체적인 방문자) Visitor 역할의 인터페이스를 구현 Element(요소) Visitor 역할이 방문할 곳을 나타내는 역할로 방문자를 받아들이는 accept 메소드 선언 Concrete Element(구체적인 요소) Element 역할의 인터페이스를 구현 Object Structure(오브젝트 구조) Element 역할의 집합을 취급하는 역할 이제 구현을..

Java 2020.07.09

[Design Pattern] 데코레이터 패턴(Decorator Pattern)

날씨는 무더운데 마스크를 끼고 다니려니 얼굴에 뭐가 나는거 같기도... 코로나19에 걸리기 전에 답답해서 죽을 것 같다는... 아무튼 답답함을 이기고 학습을 진행해야겠죠~^^ 오늘의 학습 주제는 데코레이터 패턴(Decorator Pattern)입니다 데코레이터는 "장식을 하는 것"을 의미하는데 뭔가 느낌이 어떤 본판에 살을 붙이는 패턴일 것 같네요~ 언제나 처럼 데코레이터 패턴의 역할들에 대해 정리하고 시작하겠습니다 역할 설명 Component 기능을 추가할 때 핵심이 되는 역할이며 인터페이스만을 결정 Concrete Component Component 역할의 인스턴스를 구현 장식자(Decorator) Component 역할과 동일한 인터페이스를 가지고 Decorator 역할이 장식할 대상이 되는 Com..

Java 2020.07.07

[Design Pattern] 복합체 패턴(Composite Pattern)

어느 덧 7월 2020년도 하반기로 접어들었습니다 남은 반년 화이팅하시고 좋은 성과와 행복이 가득하시길 기원합니다 아무튼 오늘의 학습 주제는 복합체 패턴입니다 컴퓨터 파일 시스템(File System)에는 디렉터리(Directory) 혹은 폴더(Folder)가 있고 그 안에는 다른 디렉터리나 폴더가 있을 수 있고 파일도 있을 수 있습니다 그런데 어떤 디렉터리 안을 조회할 때 이것이 디렉터리 인지 파일인지 모르지만 이 둘을 하나의 디렉터리 엔트리(Entry)로 간주하여 재귀적인 구조를 이루게하면 편리해질 수 있습니다 이번 학습 주제인 복합체 패턴(Composite Pattern)은 이와 같은 모습으로 만들기 위한 패턴입니다 오늘도 복합체 패턴에 등장하는 역할들을 정리하고 시작하겠습니다 역할 설명 Leaf(..

Java 2020.07.05

[Design Pattern] 전략 패턴(Strategy Pattern)

정말 오랜만에 글을 작성하네요-_- 오늘의 학습 주제는 디자인 패턴 중 Strategy 패턴입니다 Stratey는 전략으로 적을 이기기 위한 작전이나 군대를 움직일 때의 방책 등을 의미합니다 프로그래밍에서 전략은 아무래도 알고리즘(Algorithm)이 되겠네요 Strategy 패턴은 이 알고리즘을 구현한 부분을 모두 교환할 수 있는 패턴입니다 먼저 Strategy 패턴의 역할들을 정리하면 다음과 같습니다 역할 설명 Strategy(전략) Strategy는 전략을 이용하기 위한 인터페이스를 결정 Concrete Strategy(구체적인 전략) Strategy의 인터페이스를 실제로 구현 Context(문맥) Context는 Strategy를 이용하는 역할 역시 직접 구현을 해봐야 알 수 있겠죠?^^; 1. ..

Java 2020.06.29
반응형
LIST