- Today
- Total
목록스터디/디자인 패턴 (23)
작심삼일
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 "객체에 동적으로 새로운 책임을 추가할 수 있게 합니다. 기능을 추가하려면, 서브클래스를 생성하는 것보다 융통성 있는 방법을 제공합니다." 라고 책에 적혀있지만, 나는 이해하기 어려웠다. 스터디를 마친 후에야 decorator pattern이 이해됐는데, 한마디로 정리하자면, 기능을 계속 추가하는 패턴이다. 기본에 이것저것 가져다 붙일 때나, 규모를 분할하고 계층화할 때 유용하다. 하지만 데코레이터가 너무 많아지면 지저분해지고(여느 코드가 그렇 듯), 어디서 책임이 추가된 것인이 확인하기 어려워진다. 어떻게 쓰는가 Component, ConcreteComponent..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 이 패턴도 개념은 이해하기 쉬웠다. 이름이 Template인 것처럼 알고리즘의 뼈대만 정의하고, 구체적인 수행 방법은 서브클래스에서 정의한다. 하지만 곧 Factory method와 헷갈리기 시작했다.내 스스로 정리해본 결과, Factory method보다 Template method가 좀 더 작은 내용인 것 같다.밑에도 써놨지만, 서브클래스의 확장을 제어하기 때문이다. 어떻게 쓰는가 대부분의 기능은 같지만, 사소한 부분이 다를 때 주로 사용한다. 또한 동시에 서브클래스를 어느 정도 제어하고 싶을 때도 사용한다. 많은 분들이 커피 만드는 것을 예시로 드는데, 이 예..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 Prototype method. 한글로는 원형 패턴이라고 한다. 난 이 '원형'이 circular list처럼 circle이라는 뜻인 줄 알았는데, 그게 아니라 '원본'의 뜻이었다;; Prototype의 의미먼저 생각해봤으면 이런 일은 없었을텐데 멍청하게 왜그랬을까... 아무튼 이 패턴도 매우 간단하다. 쉽게 말해 ctrl+C/V, 복붙을 할 때 사용하면 된다. 똑같은 객체를 매번 만들기 귀찮으니 cloning을 하는 것이다. 예시를 보면 이해가 빠르다. 어떻게 쓰는가 Prototype: 인터페이스 정의 ConcretePrototype: 복제 연산 구현 Client..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 Singleton 패턴은 개념이 어렵지 않기 때문에 쉽게 이해할 수 있다.두가지 조건을 만족할 때 이 패턴을 사용한다. 1. 객체가 딱 한 개만 존재해야 하는 경우 2. 이 객체를 어디서든지 참조할 수 있도록 해야할 때 사용 그렇기 때문에 Singleton 패턴을 사용하면 처음 생성할 때만 메모리를 할당하기 때문에 메모리를 절약할 수 있고 데이터를 공유하기에도 용이하다. 하지만 그렇기 때문에 OCP 원칙(Open-Closed-Principle)을 어기게 된다는 단점이 있다. 어떻게 쓰는가 인스턴스가 유일해야 함을 보장하는 것이 이 패턴을 사용할 때 제일 중요한 부분..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 이전에 설명한 Abstract Factory Pattern은 Factory method를 여러 개 묶은 것으로 볼 수 있다. 전에 예를 들었을 때의 그림을 가져와보면, 위에서 수학, 물리, 화학을 각각 Factory method로 볼 수 있다. 어떻게 쓰는가 Factory method는 크게 네 가지(Product, ConcreteProduct, Creator, ConcreteCreator)로 구성된다. Product는 물건을 정의하고, Creator는 만드는 것이다. Concrete가 붙은 것은, 실제로 물건을 정의하거나 실제로 만들 때 사용한다. 이렇게 Conc..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 틀린 부분은 알려주시면 감사하겠습니다. 어떤 패턴인가 하나의 System이 여러 sub-module들로 구성되어 있다고 하자. 성적을 잘 받아 높은 등수를 얻기 위해서는 한 과목만 공부하면 안 된다. 모든 과목을 다 공부해야 한다. '공부하기'라는 시스템을 실행시킬 때 그 안에 속한 '수학', '물리', '화학'을 모두 실행시켜야 하는 것이 Abstract Factory Pattern이다. 비슷한 제품 군을 묶어주는 역할을 하며, 내부를 건드리지 않을 수 있다는 것이 장점이다. 후에 서술할 Factory mathod를 한 번 더 추상화한다. 어떻게 쓰는가 Abstract Factory Pattern을 사용하면 실제 객..
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다. 나쁜 코드란 무엇인가 좋은 코드란 직관적으로 이해할 수 있는 코드다. 그럼 나쁜 코드란 무엇일까? 나쁜 코드라는 것은 수많은 예시가 있지만 한마디로 정리하자면 한눈에 들어오지 않거나 설명이 많이 필요한 코드라고 생각한다. 구체적으로 생각해보면 여러 가지가 있을 수 있다. 첫째, 이름을 직관적으로 짓지 않는다. 흔히 코딩을 하다보면 나만 아는 이름이나 편한 이름으로 변수명을 짓는 경우가 많다. 혹은 함수명을 정해두고 코딩을 하고 있는데 어쩌다보니 점점 그 함수가 하는 일이 많아지기도 한다. 이런 경우 모두 타인이 봤을 때 그 코드를 이해하는 데 시간이 많이 걸리게 된다. 전자의 경우에 대한 예시를 들어보면 다음과 같다...