일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Rails
- Eclipse
- 함수형 프로그래밍
- solid
- 디자인패턴
- 겨울카카오인턴
- DesignPattern
- Java
- 람다 칼큘러스
- tcp
- Network
- 로버트마틴
- javscript
- 큐
- Collections
- Python
- 자바
- Spring
- 파이썬
- JDBC
- 프로그래머스
- 백준
- 스택
- Pattern
- functional programming
- Collection
- exception
- lambda calculus
- JavaScript
- design-pattern
- Today
- Total
목록디자인패턴/Structural Design Pattern (8)
개발자 노트
참고자료 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/flyweight FlyweightPattern이란? structural design pattern 각 객체 별로 데이터를 유지하기보단, 공통의 요소를 공유하여 메모리를 절약하는 패턴 (다른 말로 캐싱) 상황 플레이어간 총 싸움하는 게임이 있습니다. 이 게임의 탄(particle)의 종류엔 총알, 미사일, 샷건 총알이 있습니다. 그런데 실행한지 얼마 안되어 메모리 부족으로 인해 게임이 종료되었습니다. 문제의 원인 탄 하나당 x,y좌표, 벡터, 속도, 색, 이미지값을 가지는데, 매 총알 하나마다 이를 새로 생성해주었습니다. 그 탄 하나당 차지하는 용량은 아래 그림 오른쪽에 21KB정도 됩니다. 따라서 게임에 100만 발이 ..
참고 자료 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개의 타입을 가진 오브젝트가 있습니다. 큰 박스 안에는 좀 더 작은 박스가 들어있을 수 있고, 상품이 들어있을 수 있습니다. 주문은 박스로 포장되지 않은 상품일 수도 있으며, 상품이나 박스..
참고자료 https://refactoring.guru/design-patterns/bridge https://en.wikipedia.org/wiki/Bridge_pattern Design Patterns: Elements of Reusable Object-Oriented Software (link) https://archive.org/details/designpatternsel00gamm/page/151 BridgePattern이란? structural design pattern guru 정의 뚱뚱한 클래스나 매우 연관된 클래스를 두 개의 계층으로 분리하는 패턴 GoF-DesignPattern 정의 구현된 클래스(implementation)와 abstraction클래스가 독립적으로 변하도록 하기 위해서 ..
출처 https://refactoring.guru/design-patterns/adapter Adapter pattern이란? 구조 패턴 두 인터페이스가 불일치할 때, 두 인터페이스가 상호작용할(collaborate) 수 있도록 해주는 디자인 패턴입니다. 상황 목표 주식 시장 모니터링 어플을 만드려고 합니다. 방법 stock data를 XML 포맷으로 받습니다. Analytics Library를 통해 분석을 하고, 그래프를 보여주려고 합니다. 문제 그런데 문제가 있습니다. Analytics Library는 JSON 포맷으로 데이터를 받아 분석합니다. 즉, Stock데이터를 공급해주는 곳의 포맷과 데이터를 받아 분석하는 프로그램의 포맷이 불일치합니다. 서드 파티 라이브러리 코드를 변경하여 해결하려 한다면?..
Object간 관계에 대하여 깨알 용어정리 부분 = part 전체 = whole 1. Association 정의 두 객체간 약한 관계를 의미합니다. 특징 하나의 객체가 사라진다고해서 다른 객체가 파괴되진 않습니다. 하나의 객체는 다른 객체에 속하지 않습니다. UML 다이어그램 우측의 0..*의 의미는 Person이 Hotel을 0개에서 복수개와 연관있을 수 있다는 의미입니다. 그 반대로, 좌측의 0..*의 의미는 Hotel이 Person과 0개에서 다수개와 연관있을 수 있다는 의미입니다. 코드 public class Student { public void play ( Sport sport) { excute.play(sport); } } 이와 같이 Student-Sport간 객체 관계는 단순히 소비하는 관..