less than 1 minute read

기본적으로 팩토리는 공장이란 뜻을 내포하고 있다.

따라서 팩토리 메소드 패턴도 무언가를 위한 공장이라고 보면 된다.

객체를 만들어내는 부분을 서브 클래스Sub-Class에 위임하는 패턴.

new 키워드를 호출하는 부분을 서브 클래스테에 위임한다.

  • 예제
package pattern.factory;

public abstract class Robot {
	public abstract String getName();
}
package pattern.factory;

public class SuperRobot extends Robot {
	@Override
	public String getName() {
		return "SuperRobot";
	}
}
package pattern.factory;

public class PowerRobot extends Robot {
	@Override
	public String getName() {
		return "PowerRobot";
	}
}
  • 펙토리 클래스으로 변경
package pattern.factory;

public abstract class RobotFactory {
	abstract Robot createRobot(String name);
}
package pattern.factory;

public class SuperRobotFactory extends RobotFactory {
	@Override
	Robot createRobot(String name) {
		switch( name ){
			case "super": return new SuperRobot();
			case "power": return new PowerRobot();
		}
		return null;
	}
}
package pattern.factory;

public class ModifiedSuperRobotFactory extends RobotFactory {
	@Override
	Robot createRobot(String name) {
		try {
			Class<?> cls = Class.forName(name);
			Object obj = cls.newInstance();
			return (Robot)obj;
		} catch (Exception e) {
			return null;
		}
	}
}

요약

펙토리 메소드 패턴은 클래스간의 결합도를 낮추기 위한것, 변경점이 생겼을때 얼마나 다른 클래스에도 영향을 주는가 이다.

펙토리 메소드 패턴을 이용해 직접 객체를 생성해 사용하는것도 방지하며 서브 클래스에 위임하면서 효율적으로 코드를 제어할수있고,

의존성을 제거한다.

출처: https://jdm.kr/blog/180

Categories:

Updated: