일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- DesignPattern
- tcp
- 프로그래머스
- 함수형 프로그래밍
- solid
- 스택
- Network
- Pattern
- exception
- 자바
- Rails
- 로버트마틴
- design-pattern
- Python
- 파이썬
- 디자인패턴
- 백준
- Spring
- Collection
- 람다 칼큘러스
- javscript
- 큐
- Collections
- JavaScript
- lambda calculus
- Java
- Eclipse
- functional programming
- JDBC
- 겨울카카오인턴
- Today
- Total
목록디자인패턴/Behavioral Design Pattern (11)
개발자 노트
참고자료 https://refactoring.guru/design-patterns/visitor Intent 분류 behavioral design pattern object의 behavior을 캡슐화하고 요청을 object에 위임하는 패턴 정의 object로부터 알고리즘을 분리하는 패턴 Problem 상황 하나의 거대한 그래프로 구성된 지형 정보 앱을 개발하고 있습니다. 노드는 도시 또는 도서관같은 것이 될 수 있습니다. 노드 사이에 도로가 있다면 연결될 수 있습니다. 노드의 클래스는 노드의 유형을 나타내고, 각 특정한 노드는 객체를 나타냅니다. 요구 그래프를 XML format으로 export하라는 요구를 받았습니다. 안 좋은 접근 방법 - 노드에 로직 추가 노드에 XML exporting method..
참고자료 https://refactoring.guru/design-patterns/template-method Intent 분류 behavioral design pattern behavioral class pattern으로, 클래스간 행동(behavioral)을 분산하기 위해 상속을 이용하는 패턴 정의 알고리즘의 뼈대(skeleton)를 super 클래스에 정의하고, subclass는 super클래스의 뼈대를 바꾸지 않은 채 특정한 알고리즘을 나타내는 method를 오버라이딩하는 패턴 Problem 상황 데이터 마이닝 앱을 생각해봅시다. 이 앱은 기업 문서를 분석합니다. 유저가 데이터를 넣어줍니다. 그러면 통일된 형식으로 파싱하고 이를 분석하여 의미있는 데이터를 추출합니다. 문제 input type 추가..
참고 자료 https://refactoring.guru/design-patterns/strategy Intent 분류 behavioral design pattern object의 behavior을 캡슐화하고 요청을 object에 위임하는 패턴 정의 알고리즘의 집합을 정의하고, 각각 개별 클래스로 놓은 뒤 그 객체들을 바꿀 수 있도록 하는 패턴 Problem 상황 네비게이션 앱을 생각해봅시다. 개발 초기에 자연 경관을 볼 수 있는 루트를 알려주는 기능을 만들었습니다. 시간이 흘러 점점 요구사항이 점점 추가됩니다. 도보로 걸을 수 있는 루트를 제공해주는 기능을 추가해주고... 대중교통을 통해 갈 수 있는 루트를 제공해주는 기능을 추가해주고... 심지어 특정 도시를 경유하여 갈 수 있는 루트를 제공해주는 기능..
세줄 요약 1. design pattern 중 behavioral design pattern 2. object의 behavior을 캡슐화하고 요청을 object에 위임하는 패턴 3. object의 상태가 변할 때마다 행동을 바꾸도록 하는 패턴 참고 자료 https://refactoring.guru/design-patterns/state https://en.wikipedia.org/wiki/State_pattern Intent 분류 behavioral design pattern object의 behavior을 캡슐화하고 요청을 object에 위임하는 패턴 정의 object의 상태가 변할 때마다 행동을 바꾸도록 하는 디자인 패턴입니다. 이 때문에 object의 class가 변경되는 것 처럼 보입니다. Pro..
참고 자료 https://refactoring.guru/design-patterns/observer https://ko.wikipedia.org/wiki/%EC%98%B5%EC%84%9C%EB%B2%84_%ED%8C%A8%ED%84%B4 Intent 분류 behavioral design pattern 그룹 내 object간 어떻게 소통할 지에 대해 관한 패턴 정의 (guru) 여러 객체들이 관찰하고 있는 객체에 발생하는 이벤트를 알리기 위해 subscription 메커니즘을 정의하도록 하는 패턴 (wiki) 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다 Problem..
참고 https://refactoring.guru/design-patterns/memento memento: (사람 장소를 기억하기 위한) 기념품 정의 behavioral deisign pattern object의 behavior을 캡슐화하고 요청을 object에 위임하는 패턴 세부 구현을 캡슐화하면서 이전 상태의 object를 저장하거나 복구하는 디자인 패턴 Snapshot Pattern이라고도 불림 상황 - editor program 되돌리기 기능 구현 editor 프로그램이 있다고 생각합시다 이 프로그램은 텍스트 편집 뿐만 아니라 텍스트를 꾸미고, 이미지를 삽입할 수도 있습니다. 문제 어떻게 해야 되돌리기 기능을 구현할 수 있을까요? 되돌리기 기능을 구현하기 위해서... operation을 수행 전..
참고자료 https://refactoring.guru/design-patterns/mediator 정의 behavioral design pattern 그룹 내 object간 어떻게 소통할 지에 대해 관한 패턴 객체간 직접적으로 소통(communication)하는 것을 제한하고 mediator란 객체로 소통(collaboration)하도록 강제하는 디자인 패턴 상황 - Dialog 내 Component간 소통 고객의 profile을 생성하고 편집하는 dialog를 생각해봅시다 이 dialog엔 다양한 form controll이 존재합니다. ex:) text fields, checkboxes, buttons 핵심 포인트 form내 component간 어떻게 소통해야 좋을까요? component간 상호작용 예..
참고 자료 https://refactoring.guru/design-patterns/iterator 정의 behavioral design pattern object의 behavior을 캡슐화하고 요청을 object에 위임하는 패턴 collection의 자료구조를 모른 채 element들을 순회할 수 있는 디자인 패턴 상황 - 다양한 타입의 collection 순회 다양한 타입의 collection을 순회해야 합니다. 안좋은 접근방법 - collection에 순회알고리즘 구현 문제점 복잡한 자료구조일 경우 순회가 어렵고, 여러 종류가 있을 수 있습니다. 트리의 경우를 보면 DFS 또는 BFS로도 또는 랜덤하게 순회할 수 있는데 이 모든 순회 알고리즘을 collection에서 구현한다면 지저분(blur)해질..
출처 https://refactoring.guru/design-patterns/command http://aeternum.egloos.com/v/2948571 정의 behavioral design pattern object에 행동을 캡슐화하고, 요청을 캡슐화된 object에 위임하는 디자인 패턴 request를 request에 대한 모든 정보를 가지고 있는 stand-alone object로 바꾸는 디자인 패턴 이와 같이 변형함으로써 서로 다른 요청에 대해 메서드를 매개변수화할 수 있고, 요청의 실행을 딜레이하거나 큐에 넣을 수 있으며, 원상태로 돌리는 (undoable)작업을 수행할 수 있게 됩니다. 상황 - 텍스트 에디터앱 제작 한글, word와 같은 텍스트 에디터앱을 제작하려고 합니다. 문제 다양한..
참고 자료 https://refactoring.guru/design-patterns/chain-of-responsibility Chain of Responsibility란? Behavioral object pattern 그룹 간 어떻게 소통할 지에 관한 패턴 요청을 chain of handlers에게 전달하는 패턴입니다. 이 체인에서 각 handler가 요청을 전달받으면 요청을 처리할 지, 다음에게 넘겨줄 지 결정을 합니다. 상황 Online Ordering System 요구사항 권한을 부여받은 유저만 주문을 생성할 수 있도록 시스템 접근을 제한하고 싶습니다. 또한, 관리자 권한이 있는 유저만 모든 주문에 대해 모든 정보를 볼 수 있도록 하고 싶습니다. 접근 이는 순차적으로 확인해야만 하는 사항임을 깨닫..