디자인 패턴
은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이
인정한 가장 효율적인 예시를 정리한 패턴의 집합이다.
객체 지향에서 팩터리
는 객체를 생성한다
결국 팩터리 메서드
는 객체를 생성 반환하는 메서드 이다.
더 나아가 패턴
이라는 접미사가 따라온다면 상위클라스에서 생성한 메서드를
하위클라스에서 오버라이딩 하여 객체를 반환하게 하는 것을 의미한다.
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();
}
}
오버라이드된 메서드가 객체를 반환하는 패턴
![012](https://user-images.githubusercontent.com/65659478/159110356-253d56ab-7a03-4150-ae3c-729f57711f67.jpg)
![013](https://user-images.githubusercontent.com/65659478/159110357-ee670925-344e-4ed9-8277-9c795c24d7b2.jpg)
![014](https://user-images.githubusercontent.com/65659478/159110358-2bf2894d-e2ed-4224-9afa-bbbfa764c327.jpg)