티스토리 뷰
의존성을 낮출 수 있는 생성패턴의 하나로 생성 방법이 바뀔 때마다 새로운 매개변수를 넘겨받음으로써, 생성할 객체의 유형을 바꿀 수 있는 추상 팩토리 패턴에 대한 예를 적어보고자 한다.
이런 생성 패턴을 사용하는 이유 중 가장 큰 이유가 의존성의 낮춤으로써, 유연성을 확보하는 데 목적을 둔다.
이 패턴을 설명하기위해 로봇을 생성하는 프로그램을 간단하게 제작해 보겠다.
우선, A, B, C라는 공장이 있다. A공장에서는 청소로봇을 생산하고, B공장은 전투로봇을 생산한다. 그리고 , C공장은 요리로봇 생산한다.
사용자는 청소로봇을 필요로 해서, A공장에 찾아가서 로봇을 만들어달라고 한다.
이 상황을 코드로 옮겨 보자.
Client
RobotFactory factory = new ARobotFactory(); Robot robot = factory.CreateRobot(); robot.working();
public abstract class RobotFactory { public Robot CreateRobot(){ Robot robot = CreateSpecializedRobot(); return robot; } public abstract Robot CreateSpecializedRobot(); }
public class ARobotFactory extends RobotFactory { @Override public Robot CreateSpecializedRobot() { return new CleaningRobot(); } }
public interface Robot { public void working(); }
public class CleaningRobot implements Robot { @Override public void working() { System.out.println("Cleaning"); } }
다음과 같은 상황에서 사용자는 요리해주는 로봇이 필요하다고 했을때, C공장에 의뢰를 하면된다.
public class CRobotFactory extends RobotFactory { @Override public Robot CreateSpecializedRobot() { return new CookingRobot(); } }
public class CookingRobot implements Robot { @Override public void working() { System.out.println("cooking"); } }
이를 UML을 이용해서 살펴보자.
이런 식으로 구현을 함으로써, 언제, 어떻게 생성되는지에 대한 유연성을 가질 수 있다.
'Paradigm > OOP' 카테고리의 다른 글
[객체지향] Bridge Pattern (0) | 2014.08.05 |
---|---|
[객체지향] PrototypePattern (0) | 2014.08.05 |
[OOP] Refactoring (0) | 2013.11.06 |
[OOP] Law of demeter (0) | 2013.10.30 |
[OOP] Dependency Inversion Principle (0) | 2013.10.29 |
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
- Total
- Today
- Yesterday