Factory Method 방법에서 객체의 인터페이스와 공장의 인터페이스 두개를 사용하는 대신
객체의 인터페이스만을 사용하고 객체 클래스에서 내부 정적 클래스를 통해 Factory를 선언하여 사용하는 방식도 있다
public class Book implements Product{
String bookName;
public Book(String bookName) {
this.bookName = bookName;
}
@Override
public void use() {
System.out.println(bookName+"을 읽습니다");
}
public static class Factory {
public static Book create(String bookName)
{
return new Book(bookName);
}
}
}
단, 이런 경우 Product인터페이스가 아닌 Book클래스형으로 객체를 받아야한다
-> 결합도는 낮아지지 않지만 구현의 편이성은 좀더 편해진다
Book클래스 안의 Factory클래스의 create메소드 사용
Book springBook = Book.Factory.create("스프링 마스터하기");
springBook.use();
//출력
스프링 마스터하기을 읽습니다