목록Software Design Pattern/Notes (15)
Moe's Tech Blog
Introduction Thereis a common issue when the pre-existing system needs to incorprate third-party libraries or needs to connect to other systems Adapter design pattern Are frequently used because the output of one system may not conform to the expected input of another system Helps to facilitate communication between two existing systems by providing a compatible interface Adapter Pattern Is comp..
Motivation As system gets larger, code gets more and more complex This can get confusing for the client classes in your system to use System complexity is not always a sign of poor design The scope of problem you are trying to solve is so large it requires a complex solution But client classes prefer a simplier, and easy to use interaction Example 1. Consider a large home has many subsystems (el..
is responsible soely for the wholesale creation of objects It's like outsourcing the creation of objects involving several steps Motivation 1. When object creation logic becomes too convoluted When initialization procedure becomes too complex, wants to move this part of code somewhere 2. Initializer is not descriptive (in python) name is always __init__ cannot overload with same sets of argument..
Design Principle 1. Coupling and Cohesion are the metrics used to evaluate design complexity Coupling focuses on complexities between a module and other modules Cohesion focuses on complexities within a module Help better apply object-oriented design principles achieve more managable system Think of badly designed system like a puzzle You can only connect specific puzzle to another puzzle Think ..
Facilitates communication between other components without them necessarily being aware of each other or having direct (reference) access to each other Motivation for using it is: 1. Some components may go in and out of a system at anytime Example 1. Chat room participants 2. Customers on airplane 3. Players on MMORPG (leave the game, suffer disconnection) 2. Makes no sense for them to have a di..
싱글톤은 프로세스가 실행중에 오직 하나의 오브젝트만 생성 되로록 강제하는 패턴이다 프로그램이 shutdown 될때까지 싱글톤을 없애면 안된다 class Singleton { static instance; constructor() { if (!Singleton.instance) { Singleton.instance = this; } return Singleton.instance; } } 싱글톤 패턴을 사용하는 이유 메모리 절약 하나의 클래스 인스턴스로 수행하기 때문에 일반 클래스보다 사용되는 메모리가 적다 클래스간의 데이터 공유가 쉽다 싱글톤 패턴이 유용할때 병렬 프로그래밍 - 실행과 함께 함수의 작업 진행상태를 보고싶을때 싱글톤 패턴의 문제점 테스트 하기 어렵다 격리된 상황에서 수행되려면 매번 인스턴스의..
필자의 디자인 페턴의 공부의 계기는 2018년도로 거슬러 올라갑니다. 첫번째 회사에 취직을 했을땐 필자는 “그냥 돌아가게끔 만들면 되겠지” 하는 생각이 대다수 였습니다. 그때 필자는 회사에서 살아남아야지 생각아래 회사에서 요구하는것들을 배우며 거기에 필요한것들을 배우고 있었습니다. 다른것을 생각할 여유가 없었습니다. 시간이 지나고 자리가 잡혀갔을때 큰 코드베이스를 보며 필자는 “어떻해 하면은 보기좋고 관리하기도 편한 클린한 코드를 만들 수 있을까. 상대방이 왜 이렇게 개발을 했어? 라는 질문에 답변을 줄 수 있을까”는 고민을 갖게되었습니다. 그때 제 선배 겔럼님이 design pattern을 공부하면 그에대한 답변을 얻을 수 있을거라고 조언을 하셨습니다. 필자는 시간이 지나 지금 디자인 페턴 그리고 아키..