티스토리 뷰

의존성을 낮출 수 있는 생성패턴의 하나로 생성 방법이 바뀔 때마다 새로운 매개변수를 넘겨받음으로써, 생성할 객체의 유형을 바꿀 수 있는 추상 팩토리 패턴에 대한 예를 적어보고자 한다.


이런 생성 패턴을 사용하는 이유 중 가장 큰 이유가 의존성의 낮춤으로써, 유연성을 확보하는 데 목적을 둔다.


이 패턴을 설명하기위해 로봇을 생성하는 프로그램을 간단하게 제작해 보겠다.


우선, 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