Factory Method Pattern - dnwls16071/Backend_Summary GitHub Wiki
π Factory Method Pattern μ€λͺ
- ν΄λμ€λ€μ κ΄λ¦¬μ μμ±μ λ΄λΉνλ ν©ν 리λ₯Ό λ§λ€μ΄ μ€κ°μ λλ©΄ ν΄λΌμ΄μΈνΈ μ½λμμλ ν΄λμ€λ€μ μΈλΆ μ’
λ₯ λ³νμ μ κ²½μΈ νμκ° μμ΄μ§λ€.
[Ex1]
// Product interface
public interface Product {
void create();
}
// κ° μΈν°νμ΄μ€λ₯Ό ꡬνν μν
public class Electronics implements Product {
@Override
public void create() {
System.out.println("Electronics product created.");
}
}
// κ° μΈν°νμ΄μ€λ₯Ό ꡬνν μν
public class Clothing implements Product {
@Override
public void create() {
System.out.println("Clothing product created.");
}
}
// κ° μΈν°νμ΄μ€λ₯Ό ꡬνν μν
public class Book implements Product {
@Override
public void create() {
System.out.println("Book product created.");
}
}
// ProductFactory class
public abstract class ProductFactory {
// Factory Method
public abstract Product createProduct(String type);
public Product orderProduct(String type) {
Product product = createProduct(type);
product.create();
return product;
}
}
// ConcreteProductFactory class (Concrete Factory)
public class ConcreteProductFactory extends ProductFactory {
@Override
public Product createProduct(String type) {
if (type.equalsIgnoreCase("electronics")) {
return new Electronics();
} else if (type.equalsIgnoreCase("clothing")) {
return new Clothing();
} else if (type.equalsIgnoreCase("book")) {
return new Book();
} else {
throw new IllegalArgumentException(
"Unknown product type."
);
}
}
}