관리 메뉴

HAMA 블로그

왜 패턴이 중요한가? 본문

소프트웨어 사색

왜 패턴이 중요한가?

[하마] 이승현 (wowlsh93@gmail.com) 2020. 8. 13. 15:42

https://www.dezeen.com/2014/08/29/campus-netzwerk-office-format-elf-architekten-perforated-aluminium/

패턴은 추상적인 "의도"를 보다 명확한 의미로 "규정" 을 짓습니다.
패턴을 사용하는 이유와 공부하는 이유는 아래와 같습니다.

- 그로 인해 선배로 부터 값진 경험을 물려 받게 해 줍니다. 
- 그로 인해 의사소통을 원할하게  만들어 줍니다.
- 그로 인해 자신의 생각에 확신을 갖게 합니다.
- 그로 인해 장점과 단점을 드러내 줍니다. 모든 패턴에는 장점과 단점이 있습니다. (모든 기술도 마찬가지)  

- 그로 인해 연관 패턴들과의 계층적 구조를 보여주어 큰 규모에서의 설계를 가능하게 합니다.
- 그로 인해 시야가 넓어집니다. 
- 그로 인해 이름 짓기 능력을 발전 시킬 수 있습니다. 
- 그로 인해 추상화 & 모듈화 능력을 발전 시킬 수 있습니다.

이제 다양한 패턴들에 대한 이름과 의도에 대해서 정리 해 보겠습니다. 

Gof 디자인패턴 

Creational 

패턴명 의도
Factory Method  
Abstract Factory  
Builder  
Prototype  
Singleton  


Sturctural

패턴명 의도
Adapter  
Bridge  
Composite  
Decorator  
Facade  
FlyWeight  
Proxy  


B
ehavioral

패턴명 의도
Interpreter  
Template Method  
Chain of Responsibility  
Command  
Iterator  
Mediator  
Memento  
Observer  
State  
Strategy  
Visitor  


켄트백 구현 패턴 

   
   
   
   
   


멀티쓰레드 디자인패턴 

패턴명 의도 
Single Threaded Execution   
Immutable  
Balking  
Producer-Consumer  
Read-Write Lock  
Thread-Per-Message  
Worker Thread  
Future   


POSA-2 (네트워킹) 디자인패턴 

이벤트 핸들링 패턴 

Reactor  
Proactor  
Asynchronous Completion Token  
Acceptor-Connector  

Synchronization Patterns

Scoped Locking  
Strategized Locking  
Thread-Safe Interface  
Doblle-Checked Locking Optimization  

Concurrency Patterns

Active Object  
Monitor Object  
Half-Sync/Half-Async  
Leader/Followers  
Thread-Specific Storage   


POSA-3 (리소스) 디자인패턴 

Resource Acquisition

Lookup  
Lazy   
Eager  
Partial  

Resource Lifecycle

Caching  
Pooling  
Coordinator  
Resource LifeCycle Manager  

Resource Release

Leasing  
Evictor  

 

메세지 큐 디자인패턴 

(work queue) Round Robin Dispatch 워커에게 하나씩 배분한다.
(work queue) Fair Dispatch 워커에게하나씩 배분하되, 작업시간도 감안해서 균등히 배분한다.
(pub/sub) Exchange  여러 소비자에게 한번에 다 나눠준다.
(routing) Direct Exchange 특정 데이터만 선택해 가져간다.
(topic) Topic Exchanges 패턴에 기반해 소비자가 가져간다.
(request/response) rpc 보내고 바로 받는다.

 


마이크로서비스 디자인패턴 

SAGA  
CQRS  
BFF  
회로차단   
백오프  
타임아웃  
상태점검  
서비스탐색   
부하분산 - 동일한것을 여러개로 복제
- 리소스가 다른것을 분리 
- 서비스가 다른 것을 분리 
캐싱   
동기/비동기 콜   
이벤트 소싱   
서비스별 DB   
격벽    


엔터프라이즈 어플리케이션 디자인패턴 

도메인 논리 패턴  
데이터 원본 아키텍처 패턴  
객체-관계형 동작 패턴  
객체-관계형 구조 패턴  
웹 프레젠테이션 패턴
 
분산 패턴
 
오프라인 동시성 패턴
 
세션 상태 패턴
 


Spring 프레임워크 디자인 패턴  www.baeldung.com/spring-framework-design-patterns

   
   
   
   



J2EE 프리젠테이션 패턴 

Intercepting Filter 패턴  
Front Controller 패턴  
Context Object 패턴  
Application Controller 패턴  
View Helper 패턴  
Composite View 패턴  
Service to Works 패턴  
Dispatcher View 패턴
 


J2EE 비지니스 티어 패턴 

Business Delegate 패턴  
Service Locator 패턴  
Session Facade 패턴  
Application Service 패턴  
Business Object 패턴  
Composite Entity 패턴  
Transfer Object 패턴  
Transfer Object Assembler 패턴  
Value List Handler 패턴
 
통합 티어 패턴
 
Service Activator 패턴
 
Domain Store 패턴
 
Web Service Broker 패턴
 

 

기업통합 디자인패턴 

Content based Router  
Message Filter  
Dynamic Router  
Recipient List  
Splitter  
Aggregator  
Resequencer  
Content Enricher  
Content Filter  
Pipes and Filter   


데이터 모델 패턴

   
   
   
   


DDD 디자인패턴 

   
   
   
   


빅데이터 디자인패턴 

람다   
   
   
   

 

메모리 매니지먼트 디자인패턴 

고정된 크기   
고정되지 않은 크기   
연속 할당 후 한번에 릴리즈   
Buddy   
tcmalloc  


데이타 베이스 디자인 패턴 

   
   
   
   
   

 

React 에서 사용되는 패턴 

Provider 패턴   
   
   
   

 

패턴매칭 (데이터 분석) 디자인패턴 

   
   
   
   

크립토 이코노미 디자인패턴 

   
   
   
   

크립토 보안 디자인패턴 

   
   
   
   

 

'소프트웨어 사색 ' 카테고리의 다른 글

추상화  (1) 2021.08.29
코더보다는 프로그래머가 되라?  (5) 2021.07.01
왜 야근해야 하는지 모르겠는데 설명 좀 해주실분?  (0) 2020.07.16
Rust  (0) 2020.06.16
소프트웨어 복잡도 줄이기 (1)  (0) 2020.05.13
Comments