Java(폐지)/디자인 패턴
팩토리 메서드 패턴(Factory Method Pattern)
kyeongjun-dev
2020. 8. 5. 12:27
팩토리 메서드 패턴
팩토리 메서드는 객체를 생성 반환하는 메서드를 말한다. 여기에 패턴이 붙으면, '하위 클래스에서 팩토리 메서드를 오버라이딩하여 객체를 반환하게 하는 것'을 의미한다.
예시 코드
- Coffee.java
package factoryMethodPattern;
public abstract class Coffee {
public abstract String getName();
}
- Americano.java
package factoryMethodPattern;
public class Americano extends Coffee{
public String getName() {
return "Americano";
}
}
- Moka.java
package factoryMethodPattern;
public class Moka extends Coffee{
public String getName() {
return "Moka";
}
}
- CoffeeFactory.java
package factoryMethodPattern;
public abstract class CoffeeFactory {
public abstract Coffee createCoffee(String name);
public void boilCoffee() {
System.out.println("Boiling Coffee...");
}
}
- MakeCoffeeFactory.java
package factoryMethodPattern;
public class MakeCoffeeFactory extends CoffeeFactory{
@Override
public Coffee createCoffee(String name) {
if(name=="아메리카노")
return new Americano();
else if(name=="모카")
return new Moka();
else return null;
}
}
- CoffeeClient.java
package factoryMethodPattern;
public class CoffeeClient {
public static void main(String[] args) {
CoffeeFactory cf = new MakeCoffeeFactory();
Coffee americanoCoffee = cf.createCoffee("아메리카노");
Coffee mokaCoffee = cf.createCoffee("모카");
cf.boilCoffee();
System.out.println(americanoCoffee.getName());
System.out.println(mokaCoffee.getName());
}
}
main() 함수를 보면 팩토리 메서드를 보유한 객체를 이용하여 new 키워드 없이 이용해 커피들을 생성하고 있다.
정리
- 오버라이딩된 메서드가 객체를 반환하는 패턴을 팩토리 메서드 패턴이라고 한다.
- 팩토리 메서드 패턴은 의존 역전 원칙(DIP)을 활용한다. - 클라이언트가 추상 클래스에 의존하며, 추상 클래스는 콘크리트 클래스에 의존된다.
- 클래스간의 결합도를 낮출 수 있다.