변경에 강한 코드를 만드는 설계패턴
설계 패턴은 자주 반복되는 코드 설계 문제에 이름을 붙인 해결 방법입니다. 그대로 복사해 쓰는 완성 코드가 아니라, 어떤 책임을 어디에 둘지 생각하는 도구입니다.
- 대상: 함수와 클래스를 읽을 수 있는 분. 첫 수업에서 객체와 구성 관계를 다시 살펴봅니다.
- 배울 내용: 동작 바꾸기, 변경 알리기, 객체 만들기, 인터페이스 연결하기, 상태와 화면 분리하기.
- 예제: 외부 라이브러리가 필요 없는 짧은 Python 3 코드. 모든 수업을 무료로 읽을 수 있습니다.
- 목표: 현재 코드의 변경 지점을 설명하고, 패턴을 도입할 이유와 비용을 판단합니다.
작은 함수를 쓰면 충분한 곳에 억지로 클래스를 늘리지 않습니다. 예제에서는 출력보다 객체 사이의 호출 관계와 바뀌는 부분을 눈여겨보세요.
강좌 목차
- 01 객체의 역할과 약속 나누기상속과 구성을 구분하고 필요한 기능을 밖에서 전달합니다.
- 02 전략: 계산 방법을 갈아 끼우기변하는 계산을 함수로 분리해 사용하는 쪽과 연결합니다.
- 03 옵서버: 바뀐 내용을 구독자에게 알리기알림을 보내는 객체와 받는 객체를 느슨하게 연결합니다.
- 04 데코레이터: 기능을 감싸서 더하기같은 인터페이스를 유지하면서 앞뒤에 동작을 더합니다.
- 05 팩토리: 만드는 책임을 분리하기팩토리 메서드와 추상 팩토리가 바꾸는 부분을 구분합니다.
- 06 싱글턴: 하나라는 범위부터 정하기공유 객체의 수명과 전역 상태의 비용을 살펴봅니다.
- 07 커맨드: 요청을 객체로 만들기실행할 작업과 되돌리기에 필요한 정보를 함께 보관합니다.
- 08 어댑터와 퍼사드: 연결과 단순화인터페이스를 맞추는 일과 복잡한 절차를 감추는 일을 구분합니다.
- 09 템플릿 메서드: 절차는 고정하고 단계는 바꾸기공통 알고리즘의 순서를 두고 일부 단계를 확장합니다.
- 10 이터레이터: 저장 방식과 순회를 분리하기컨테이너와 순회 상태의 차이를 살펴봅니다.
- 11 컴포지트: 하나와 묶음을 같은 방식으로 다루기트리의 잎과 묶음에 공통 연산을 제공합니다.
- 12 상태: 현재 단계에 맞는 동작 맡기기허용되는 동작과 상태 전이를 한곳에 모읍니다.
- 13 MVC와 패턴 선택 연습모델, 뷰, 컨트롤러의 역할을 나누고 필요한 패턴만 고릅니다.