일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- functional programming
- Rails
- DesignPattern
- design-pattern
- 프로그래머스
- tcp
- JDBC
- Network
- 자바
- 로버트마틴
- 디자인패턴
- JavaScript
- Python
- 큐
- Spring
- Collections
- lambda calculus
- solid
- 파이썬
- 백준
- 람다 칼큘러스
- 함수형 프로그래밍
- Collection
- 겨울카카오인턴
- Eclipse
- Pattern
- 스택
- Java
- javscript
- exception
- Today
- Total
목록design-pattern (16)
개발자 노트
세줄 요약 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/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 요구사항 권한을 부여받은 유저만 주문을 생성할 수 있도록 시스템 접근을 제한하고 싶습니다. 또한, 관리자 권한이 있는 유저만 모든 주문에 대해 모든 정보를 볼 수 있도록 하고 싶습니다. 접근 이는 순차적으로 확인해야만 하는 사항임을 깨닫..
참고자료 https://refactoring.guru/design-patterns/proxy https://en.wikipedia.org/wiki/Proxy_pattern proxy : 대리인, 대용물 ProxyPattern이란? structual design-pattern 실제 서비스에 대해 대리인을 둠으로써 클라이언트가 실제 서비스 접근하는 것을 대리인이 컨트롤할 수 있는 패턴입니다. 상황 - 언제 실 서비스 접근에 대한 컨트롤이 필요할까? DB에 접속하여 서비스의 많은 리소스를 잡아먹을 수 있는 object가 있습니다. 이 object는 때때로 실행됩니다. 이를 위해 lazy initialization을 생각해볼 수 있습니다. 다시 말해서 필요한 순간에 object를 생성하여 DB에 접근하도록 컨트..
참고 자료 https://refactoring.guru/design-patterns/facade 여기서 설명하는 인터페이스는 자바의 인터페이스가 아니라 API, GUI에서 I에 해당하는 의미에 가깝습니다. 인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면 FacadePattern이란? structural design pattern library나 framework, 또는 다른 복잡한 클래스 집합(또는 서브시스템)에게 간소화된 인터페이스를 제공하는 패턴입니다. 상황 Application이 여러 복잡한 라이브러리 및 프레임워크의 object들을 이용해서 작업을 해야 합니다. 문제 Application에서 직접 라이브러리와 프레임워크를 사..
참고 자료 https://refactoring.guru/design-patterns/decorator DecoratorPattern이란? structural design pattern 기존 객체에 새로운 기능을 추가하고 싶을 때, 새로운 기능을 가진 wrapper 객체 내부에 기존 객체를 넣음으로써 기능을 추가하는 패턴입니다. 상황 이 상황은 기능이 확장되면서 발생하는 문제를 다룹니다. 초기 알림(notification)기능을 가진 라이브러리를 생각해봅시다. 이 라이브러리는 메세지를 입력받아 해당 메세지를 메일로 보내줍니다. 구조 Notifier 알림기능을 가진 라이브러리입니다. 메세지를 받아 send메서드를 통해 이메일을 보냅니다 Application Notifier을 가지고 있고, 그 Notifier..
참고 자료 https://refactoring.guru/design-patterns/composite https://en.wikipedia.org/wiki/Composite_pattern CompositePattern이란? structure design pattern object들을 트리 구조로 구성하도록 하고 (part-whole hierarchies) 이 object를 마치 개개의 object들인 것 처럼 다루게 하는 패턴입니다. 상황 주문 시스템을 생각해봅시다. (ordering system) 박스와 상품이라는 2개의 타입을 가진 오브젝트가 있습니다. 큰 박스 안에는 좀 더 작은 박스가 들어있을 수 있고, 상품이 들어있을 수 있습니다. 주문은 박스로 포장되지 않은 상품일 수도 있으며, 상품이나 박스..