하리Hari

2. 팩토리 패턴 (Factory)

객체 생성을 공장에 위임하여 결합도를 낮추는 팩토리 패턴을 알아봅니다.

팩토리 패턴은 객체를 생성하는 일을 전담하는 공장(클래스나 메서드)을 따로 두는 패턴이에요. 이렇게 하면 조건에 따라 다른 객체를 생성해야 할 때, 사용하는 쪽의 코드를 고치지 않아도 공장 내부만 고치면 되기 때문에 유지보수하기가 훨씬 편해져요!

하리에서는 인터페이스정적 메서드를 활용해서 팩토리 패턴을 깔끔하게 구현할 수 있어요.

(참고) 동물이 공통으로 가질 행동을 인터페이스로 규정해요
[동물]을 규정하자:
    <울기>가 있어야 한다 ()

(참고) 인터페이스를 따르는 구현체들을 만들어요
[동물]을 따르는 [강아지]를 설계하자:
    <울기>를 만들자 ():
        "멍멍! 꼬리를 흔듭니다."를 출력하자

[동물]을 따르는 [고양이]를 설계하자:
    <울기>를 만들자 ():
        "야옹! 식빵을 굽습니다."를 출력하자

(참고) 문자열을 받아서 알맞은 동물을 찍어내는 공장이에요
[동물공장]을 설계하자:
    [동물]을 돌려주는 '우리'의 <입양하기>를 만들자 ([문자열]인 '종류'):
        만약 ('종류'와 "강아지"가 같다) 라면:
            새로운 [강아지]()를 돌려주자
        그렇지 않고 만약 ('종류'와 "고양이"가 같다) 라면:
            새로운 [고양이]()를 돌려주자
        
        "알 수 없는 동물이에요!"를 출력하자
        비어있음을 돌려주자

(참고) 팩토리를 통해 객체를 생성하고, 인터페이스로 동일하게 다뤄요
'내펫'을 [동물]인 [동물공장]의 <입양하기>("고양이")로 정하자
'내펫'의 <울기>()를 실행하자

'친구펫'을 [동물]인 [동물공장]의 <입양하기>("강아지")로 정하자
'친구펫'의 <울기>()를 실행하자
놀이터
결과
코드를 작성하고 '실행' 버튼을 눌러보세요.