디자인 패턴은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이
인정한 가장 효율적인 예시를 정리한 패턴의 집합이다.
객체 지향에서 팩터리는 객체를 생성한다
결국 팩터리 메서드는 객체를 생성 반환하는 메서드 이다.
더 나아가 패턴 이라는 접미사가 따라온다면 상위클라스에서 생성한 메서드를
하위클라스에서 오버라이딩 하여 객체를 반환하게 하는 것을 의미한다.
public abstract class Animal {
// 추상 팩터리 메서드
abstract AnimalToy getToy();
}
public abstract class AnimalToy {
abstract void identify();
}
public class Dog extends Animal {
// 추상 팩터리 메서드 오버라이딩
@Override
AnimalToy getToy() {
return new DogToy();
}
}
//팩터리 메서드가 생성할 객체
public class DogToy extends AnimalToy {
public void identify() {
System.out.println("나는 테니스공! 강아지의 친구!");
}
}
public class Cat extends Animal {
// 추상 팩터리 메서드 오버라이딩
@Override
AnimalToy getToy() {
return new CatToy();
}
}
//팩터리 메서드가 생성할 객체
public class CatToy extends AnimalToy {
@Override
public void identify() {
System.out.println("나는 캣타워! 고양이의 친구!");
}
}
public class Driver {
public static void main(String[] args) {
// 팩터리 메서드를 보유한 객체들 생성
Animal bolt = new Dog();
Animal kitty = new Cat();
// 팩터리 메서드가 반환하는 객체들
AnimalToy boltBall = bolt.getToy();
AnimalToy kittyTower = kitty.getToy();
// 팩터리 메서드가 반환한 객체들을 사용
boltBall.identify();
kittyTower.identify();
}
}


오버라이드된 메서드가 객체를 반환하는 패턴


