Super class
factory pattern 에서 super class는 interface, abstract class 또는 일반적인 java class가 될수 있다.
public abstract class Product{
public abstract String getName();
public abstract int getPrice();
@override
public String toString(){
return "product name : " + getName() + ", price : " + getPrice();
}
}
Sub class
product class 를 상속받은 Computer와 Ticket class 를 구현한다. 아래의 클래스들은 super class 하위의 sub class를 정의한 것이다.
public class Computer extend Product {
private String name;
private int price;
public Computer(String name, int price){
this.name = name;
this.price = price;
}
@override
public String getName(){
return this.name;
}
@override
public int getPrice(){
return this.price;
}
public void toString(){
System.out.println("항목 :: "+ this.name + "가격 :: "+ this.price);
}
}
public class Ticket extends Product {
private String name;
private int price;
public Ticket (String name, int price) {
this.name = name;
this.price = price;
}
@Override
public String getName() {
return this.name;
}
@Override
public int getPrice () {
return this.price;
}
public void toStrig () {
System.out.println("항목 :: " + this.name + ", 가격 :: "+ this.price);
}
}
Factory class
public class ProductFactory {
public static Product getProduct(String type, String name, int price){
if("ticket".equals(type)){
return new Ticket(name, price);
}else if("computer".equals(type)){
return new Computer(name, price);
}
return null;
}
}
```java
public class main{
public static void main(){
Product p1 = ProductFactory.getProduct("Ticket"," travel", 1000);
Product p2 = ProductFactory.getProduct("computer","pc",500);
}
}
Factory Pattern 은 구현체보다는 인터페이스 코드 접근에 좀 더 용이하다 Factory Pattern은 클라이언트 클래스로부터 인스턴스를 구현하는 코드를 떼어내서, 코드를 더욱 탄탄하게 하고 결합돌르 낮춘다 Factory pattern은 구현과 클라이언트 클래스들의 상속을 통해 추상적인 개념을 제공한다.