안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
따라서 팩터리 메서드는 객체를 생성 반환하는 메서드입니다.
여기에 패턴이 붙으면 하위 클래스에서 팩터리 메서드를 오버라이딩해서
객체를 반환하게 하는 것을 의미합니다.
이전 포스팅에서 강아지,고양이와 노는 코드를 작성해봤었죠?
여기서 좀 더해서 볼트와 키티가 각자 가지고 놀고 싶어하는 장난감을 가져온다고 해보면,
볼트는 강아지 장난감을, 키티는 고양이 장난감을 가져오겠죠?
바로 예제로 보겠습니다.
예제0)
package factoryMethodPattern;
public abstract class Animal {
// 추상 팩터리 메서드
abstract AnimalToy getToy();
}
예제1)
package factoryMethodPattern;
// 팩터리 메서드가 생성할 객체의 상위 클래스
public abstract class AnimalToy {
abstract void identify();
}
예제2)
package factoryMethodPattern;
public class Dog extends Animal {
// 추상 팩터리 메서드 오버라이딩
@Override
AnimalToy getToy() {
return new DogToy();
}
}
예제3)
package factoryMethodPattern;
//팩터리 메서드가 생성할 객체
public class DogToy extends AnimalToy {
public void identify() {
System.out.println("나는 테니스공! 강아지의 친구!");
}
}
예제4)
package factoryMethodPattern;
public class Cat extends Animal {
// 추상 팩터리 메서드 오버라이딩
@Override
AnimalToy getToy() {
return new CatToy();
}
}
예제5)
package factoryMethodPattern;
//팩터리 메서드가 생성할 객체
public class CatToy extends AnimalToy {
@Override
public void identify() {
System.out.println("나는 캣타워! 고양이의 친구!");
}
}
예제6)
package factoryMethodPattern;
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();
}
}
팩터리 메서드 패턴은
-오버라이드된 메서드가 객체를 반환하는 패턴- 입니다.
그리고 SOLID 설계 원칙 중에서 DIP 의존 역전 원칙을 활용하고 있습니다.
'개발 etc' 카테고리의 다른 글
JAVA 자바 템플릿 콜백 패턴(Template Callback Pattern) (0) | 2017.03.12 |
---|---|
JAVA 자바 전략패턴(Strategy Pattern) (0) | 2017.03.12 |
JAVA 자바 템플릿 메서드 패턴(Template Method Pattern) (0) | 2017.03.12 |
JAVA 자바 싱글턴 패턴(Singleton Pattern) (0) | 2017.03.12 |
JAVA 자바 데코레이터 패턴(Decorator Pattern) (0) | 2017.03.12 |