/refactoring-to-patterns

패턴을 활용한 리팩터링(조슈아 케리에브스키 저) 학습 코드

Primary LanguageJava

Refactoring to patterns

패턴을 활용한 리팩터링, 조슈아 케리에브스키 저, 윤성준, 조상민 역, 인사이트, 2006

Refactoring Summary
Replace Constructors with Creation Methods 어떤 클래스의 인스턴스를 생성할 때 여러 생성자 중 어떤 것을 호출해야 할지 결정하기 어렵다면, 인스턴스를 생성해 리턴하는 생성 메서드로 각 생성자를 대체하여 그 용도가 명확히 드러나도록 함.
Move Creation Knowledge to Factory
Encapsulate Classes with Factory 클라이언트가 한 패키지 내의, 공통 인터페이스를 가지는 클래스들의 인스턴스를 직접 생성하고 있다면, 그 클래스의 생성자를 클라이언트가 직접 볼 수 없게 하고 팩터리를 통해 그 인스턴스를 얻도록 함.
Introduce Polymorphic Creation with Factory Method 한 상속 구조 내의 클래스들이 어떤 메서드를 각자 구현하는데 객체 생성 단계만 제외하고 나머지가 서로 유사하다면, 그 메서드를 수퍼 클래스로 옮기고 객체 생성은 팩터리 메서드에 맡김.
Encapsulate Composite with Builder 컴포짓 구조를 생성하는 과정이 반복적으로 수행되고 복잡하다면 그 세부 사항을 처리하는 별도의 빌더를 제공하여 컴포짓 구조를 쉽게 생성할 수 있게 함.
Inline Singleton
Compose Method 어떤 메서드의 내부 로직이 한 눈에 이해하기 어렵다면, 그 로직을 의도가 잘 드러내는 동등한 수준의 작업을 하는 여러 단계로 나눔.
Replace Conditional Logic with Strategy 메서드 내의 조건문을 통해 여러 개의 서로 다른 로직 가운데 어떤 것을 실행할지 선택하고 있다면, 각 로직에 해당하는 스트레티지 클래스를 만들고 각 스트레티지 인스턴스에 로직을 위임.
Move Embellishment to Decorator
Replace State-Altering Conditionals with State
Replace Implicit Tree with Composite 실질적으로 트리 구조인 데이터를 String과 같은 기본 타입으로 표현하고 있다면, 그 기본 타입의 표현을 컴포짓 구조로 바꿈.
Replace Conditional Dispatcher with Command
Form Template Method 한 상속 구조 내의 어떤 두 서브클래스가 유사한 단위 작업을 같은 순서로 실행하는 메서드를 각자 구현한다면, 각 단위 작업을 별도의 메서드로 뽑아내어 두 메서드를 일반화하고 수퍼클래스로 올려 템플릿 메서드로 만듬.
Extract Composite
Replace One/Many Distinction with Composite
Replace Hard-Coded Notifications with Observer
Unify Interfaces with Adapter
Extract Adapter
Replace Implicit Language with Interpreter
Replace Type Code with Class
Limit Instantiation with Singleton
Introduce Null Object
Move Accumulation to Collecting Parameter 지역 변수에 정보를 축적하는 매우 긴 메서드를 분해하고 각 메서드에 수집 파라미터를 넘겨 정보를 축적하도록 만듬.
Move Accumulation to Visitor
Chain Constructor 중복된 코드를 갖는 생성자가 여러 개 있다면, 생성자들이 서로 호출하게 함.
Unify Interfaces
Extract Parameter