2. 팩토리 패턴 (Factory)
객체 생성을 공장에 위임하여 결합도를 낮추는 팩토리 패턴을 알아봅니다.
팩토리 패턴은 객체를 생성하는 일을 전담하는 공장(클래스나 메서드)을 따로 두는 패턴이에요. 이렇게 하면 조건에 따라 다른 객체를 생성해야 할 때, 사용하는 쪽의 코드를 고치지 않아도 공장 내부만 고치면 되기 때문에 유지보수하기가 훨씬 편해져요!
하리에서는 인터페이스와 정적 메서드를 활용해서 팩토리 패턴을 깔끔하게 구현할 수 있어요.
(참고) 동물이 공통으로 가질 행동을 인터페이스로 규정해요
[동물]을 규정하자:
<울기>가 있어야 한다 ()
(참고) 인터페이스를 따르는 구현체들을 만들어요
[동물]을 따르는 [강아지]를 설계하자:
<울기>를 만들자 ():
"멍멍! 꼬리를 흔듭니다."를 출력하자
[동물]을 따르는 [고양이]를 설계하자:
<울기>를 만들자 ():
"야옹! 식빵을 굽습니다."를 출력하자
(참고) 문자열을 받아서 알맞은 동물을 찍어내는 공장이에요
[동물공장]을 설계하자:
[동물]을 돌려주는 '우리'의 <입양하기>를 만들자 ([문자열]인 '종류'):
만약 ('종류'와 "강아지"가 같다) 라면:
새로운 [강아지]()를 돌려주자
그렇지 않고 만약 ('종류'와 "고양이"가 같다) 라면:
새로운 [고양이]()를 돌려주자
"알 수 없는 동물이에요!"를 출력하자
비어있음을 돌려주자
(참고) 팩토리를 통해 객체를 생성하고, 인터페이스로 동일하게 다뤄요
'내펫'을 [동물]인 [동물공장]의 <입양하기>("고양이")로 정하자
'내펫'의 <울기>()를 실행하자
'친구펫'을 [동물]인 [동물공장]의 <입양하기>("강아지")로 정하자
'친구펫'의 <울기>()를 실행하자