디자인 패턴
-
Template Method Pattern디자인 패턴 2022. 2. 26. 18:24
해당 책을 통해 공부한 내용을 정리하고 있습니다. 정의 템플릿 메소드 패턴에서는 말 그대로 ‘템플릿’을 제공하는 패턴이다. 예를 들어, 발표를 할 때 약간씩 내용을 수정하면 되는 파워포인트 템플릿등이 있는데 템플릿 메소드 패턴은 이것과 정확히 같은 동작을 한다. 정해져 있는 양식이 있고, 디테일은 서브클래스에서 템플릿 메소드를 구현해 사용하는 방식이다. 책에서 소개하는 템플릿 메소드 패턴의 정의는 다음과 같다. 어떤 작업 알고리즘의 골격을 정의합니다. 일부 단계는 서브 클래스에서 구현하도록 할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 특정 단계만 서브클래스에서 새로 정의하도록 할 수 있습니다. UML과 구현 한번 UML을 보자. templateMethod는 말 그대로 순..
-
Adapter Pattern디자인 패턴 2022. 2. 25. 10:39
해당 책을 통해 공부한 내용을 정리하고 있습니다. 어댑터 패턴은 말 그대로 ‘어댑터’ 기능을 수행한다. 그렇다면 어댑터라는건 무엇일까? 어댑터는 흔히 생각하는 ‘돼지코’를 생각하면 편하다. 위 사진의 돼지코는 유럽이나 일본 등의 해외 가전을 구매할 때 전압을 변환시켜주는 기능을 하는 가전이다. 다른 기능은 하지 않고 오로지 ‘호환되지 않는’ 전압을 ‘호환 되도록’ 변환 시켜주는 기능을 하는게 어댑터의 역할이다. 어댑터 패턴의 역할 또한 같다. 위와 같이 A라는 시스템이 있고 여기에 추가해야 하는 서브시스템인 B라는 시스템이 있다고 생각해보자. 이처럼 생긴 시스템들을 연결 할 인터페이스가 맞지 않는다고 할 때, 한 시스템을 다른 시스템에 맞추는 방법도 있겠지만, 노동이 많이 들어갈 것이다. 이를 아래와 같..
-
Command Pattern디자인 패턴 2022. 2. 23. 14:26
해당 책을 통해 공부한 내용을 정리하고 있습니다. 책에서 정의하는 커맨드 패턴의 정의는 다음과 같다. 요청 내역을 객체로 캡슐화하여 클라이언트를 서로 다른 요청 내역에 따라 매개변수화 할 수 있다. 요청을 큐에 저장하거나 로그로 기록할 수도 있고 작업 취소 기능을 지원 할 수도 있다. 이해를 위해 예시를 들어 정의를 풀어보자. 어떤 요청을 처리하는 객체 ‘Receiver’가 있고, 이 객체에 요청을 보내는 ‘Requester’가 있다고 생각해보자. ‘Requester’는 ‘Receiver’에 처리하기 위한 명령(Command)를 요청(Request) 할 것 이다. 이 명령(Command)들을 따로 객체로 만들어서 캡슐화하는 것이 커맨드 패턴이라고 한다. 실생활에서 볼 수 있는걸로 예시를 들어보자. 전구를..
-
Factory Pattern디자인 패턴 2022. 2. 14. 18:12
해당 책을 통해 공부한 내용을 정리하고 있습니다. 클래스 생성을 처리하는 클래스를 ‘팩토리’라고 부른다. 프로그램을 개발하다보면 객체를 생성할 일이 정말 많은데 이를 이곳 저곳에 흩어놓는 것이 아니라, 한 클래스에 캡슐화 해두면 그 클래스에만 들어가서 처리하면 되므로 훨씬 간단하게 프로그램을 관리 할 수 있다. 팩토리에는 3가지가 있다. 심플 팩토리 팩토리 메소드 패턴 추상 팩토리 패턴 해당 팩토리들을 하나하나 정리해보자. 심플 팩토리 심플 팩토리는 ‘디자인 패턴’이라고는 할 수 없고 객체지향에서 주로 사용하는 ‘관용구’에 가깝다. 이름 그대로 단순히 어떤 객체를 생성하는 클래스를 캡슐화 해둔 것이다. 예를 들어 피자를 파는 피자가게를 생각해보면 피자 객체의 생성만을 처리하는 공장을 따로 두는 것을 의미..
-
Decorator Pattern디자인 패턴 2022. 2. 8. 15:59
해당 책을 통해 공부한 내용을 정리하고 있습니다. OCP 좋은 객체 지향 설계를 위한 원칙 중 SOLID라는 것이 있다. 약어들의 모임인 SRP, OCP, LSP, ISP, DIP의 약자다. 그 중에 OCP(Open closed Principle)이라는 것이 있는데 이는 클래스는 ‘확장’에는 열려있어야 하지만 코드 변경에는 ‘닫혀’있어야 한다는 원칙이다. 즉 기존 코드는 변경하지 않고 확장을 통해 변경 사항을 반영 할 수 있어야 한다는 것을 의미한다. . 코드를 변경하지 않고 변화를 만든다니 뭔가 말이 안되는 말 같은데 이를 어떤식으로 적용 할 수 있을까? 예를 들어보자면 Observer Pattern을 들 수 있다. Observer 패턴에서 옵저버를 추가하면 Subject에 코드를 추가하지 않고도 얼마..
-
Observer Pattern디자인 패턴 2022. 2. 3. 19:25
해당 책을 통해 공부한 내용을 정리하고 있습니다. Observer Pattern 옵저버 패턴을 이해하려면 신문사의 ‘구독’ 시스템을 생각하면 편하다. 신문을 구독하면 다음과 같은 프로세스로 나에게 신문이 도착하게 된다. 신문사에 구독을 신청한다. 신문사에서 뉴스를 배포할 구독자를 파악한다 구독자에게 새로운 뉴스를 배포한다. 옵저버 패턴 또한 위의 패턴과 같이 동작한다고 생각하면 편하다. 신문사 역할을 하는 ‘Subject’가 있고 구독자 역할을 하는 ‘Observer’가 있다. 만약 Subject의 상태가 변화하게 된다면 변화된 값을 Observer들에게 전달하는 방식으로 진행된다. 보통 밑과 같은 형식으로 구성된다. Loose Coupling 옵저버 패턴은 객체들 간의 ‘느슨한 결합’을 제공한다. Su..
-
Strategy Pattern디자인 패턴 2022. 2. 2. 16:14
디자인 패턴, 항상 공부한다고 했다가 손을 놓은 이름이다. 변명을 대자면 인터넷에서 위키피디아를 뒤져가며 공부하기엔 나에겐 너무나도 지루했고 어려웠기에 안했었다. 그래도 워낙에 중요하다고 하니 이번에 유명한 책을 샀다. 파이썬 공부할 때 신세를 졌던 그 이름 ‘헤드 퍼스트’의 책이다. 역시 헤드퍼스트 시리즈라고 해야할까 1장까지 읽은 지금까지의 소감을 말하자면 ‘재미있음!’이다. 첫 장의 내용이 Strategy 패턴인걸 안알려주고 설명을 해주는데 마지막에 이게 Strategy 패턴이라고 알려줘서 정말로 깜짝 놀랐다. 이 기억과 느낌을 까먹기 전에 오늘 배운 내용을 정리해보자. Strategy Pattern 패턴을 배우기 위해서 간단하게 ‘오리 시뮬레이터’를 생각해보자. 이 오리 시뮬레이터에는 청둥오리도있..
-
싱글톤 패턴(Singleton Pattern)디자인 패턴 2021. 10. 28. 20:58
💡 싱글톤 패턴이란? GOF의 디자인 패턴중 '생성' 패턴에 속하는 패턴으로, 클래스에서 오직 '한 개'의 인스턴스만 인스턴스 화 할 수 있도록 규제하는 디자인 패턴 📗 싱글톤 패턴의 장점 클래스가 오직 한 개의 인스턴스만 가지고 있다고 확신 할 수 있다. 인스턴스 수를 제한 할 수 있다. 전역 변수에 액세스 함으로써 손쉽게 접근 할 수 있다. 📖 함께 쓰일 수 있는 패턴들 Abstract pattern, Factory Method, Builder, Prototype State pattern, Facade Pattern 📖 전역변수보다 싱글톤 패턴이 나은 점 불필요한 변수로 Global namespace를 훼손하지 않는다. 지연 할당과 초기화를 지원함으로써 사용하든 안하든 리소스를 소모하는 전역변수와 달..