[디자인패턴] 팩토리 메서드(Factory Method) 패턴이란? (+ GoF Factory Method Pattern)
·
공부/소프트웨어공학
Factory Method 패턴은 Creational pattern이다. 클래스를 선언할 때 new 구체적인클래스이름(); 처럼 내가 사용할 클래스를 구체적으로 명시하는 동시에 사용하는 경우가 있다. 사용할 클래스가 때때로 변경된다면 그때마다 new를 사용, 객체를 생성하게 된다. 이전에 배운 Strategy 패턴을 사용하여 전략을 변경하면 되는 것 아닌가요? 라고 물을 수 있지만 사용하는 방식이 다르다. 전략 변경만으로도 클래스가 정상 작동하면 좋겠지만 전략에 따라 요구사항이 달라지거나 동적으로 전략이 변경되어야 한다면 Strategy만으로는 클래스 생성을 감당할 수 없다. 전략을 지원하는 구체적인 클래스를 생성하고 기존 메서드도 변경되어야 한다. 👉 주어진 기능을 제공하는 클래스 생성 작업을 별도로..
[디자인패턴] 데코레이터(Decorator) 패턴이란?
·
공부/소프트웨어공학
Decorator 패턴은 Structural Patten이다. 말 그대로 프로그램을 꾸미면서 확장하는 형식이다. 도로를 그리는 프로그램이 있다. 기본프로그램에서 확장해 교통 상황, 차선, 교차로 등을 그릴 수 있도록 확장하려 한다. 이렇게 새로운 기능이 추가될 때마다 기존 코드를 활용하지 못하고 계속 extends를 통해 클래스를 추가하는 게 가장 단순하다. 이는 SOLID 원칙의 LSP를 위반한다. 기능을 재사용하기 위해 일반화 관계를 사용해서는 안된다. 일반화 관계를 사용하지 말고 연관 관계를 사용하는 방식으로 프로그램을 수정해보자.이때 Display가 자기 자신을 연관 관계로 맺는 이유가 헷갈렸는데 알고 보면 단순하다. RoadDisplay의 하위 개념으로 있는 클래스인 RoadDisplay, Ro..