안녕하세요 오늘의 5분개발지식라디오~ 오늘의 주제는 팩토리 패턴입니다. 팩토리 메소드 패턴이라고도 하는데요, 팩토리 패턴이 무엇인지 코드를 통해서 먼저 알아보고 팩토리 패턴의 장단점에 대해서 알아보겠습니다.
화면에 보이는 것은 자바로 쓰여진 코드인데요, 상속에 대한 개념만 있다면 쉽게 이해할 수 있습니다. 먼저 부모 클래스인 Shape 클래스를 통해서 인터페이스를 정의해줍니다. Shape의 자식 클래스들은 draw라는 메소드를 구현해야하는데요,
Reactangle, Square, Circle 모두 부모클래스인 Shape를 상속받고 각자 draw를 구현합니다. 단순하게 출력만 해주도록 하였습니다. 여기서 모두 같은 부모클래스를 가지고 있다는 점을 기억해주시면 됩니다.
팩토리 패턴의 핵심은 현재 화면에 보여지는 코드인데요, 이름부터가 ShapeFactory입니다. ShapeFactory는 getShape라는 메소드를 가지고 있으며 Shape 클래스를 리턴해줍니다. 이는 앞의 슬라이드에서 모두 같은 부모클래스인 Shape을 가지기 때문에 가능합니다.
getShape 메소드는 인자로 넘어오는 shapeType에 따라서 Circle, Rectangle, Sqare를 생성하여 반환하여줍니다. 이렇듯 팩토리 패턴은 팩토리 메소드를 통해서 인자로 넘어온 값에 따라 맞는 클래스를 생성하여 주는 패턴을 말합니다.
먼저 장점을 알아보겠습니다.
첫번째로 확장성이 좋습니다. 새로운 타입의 추가가 쉽습니다. 동일한 부모 클래스를 상속하는 클래스를 생성하고 팩토리 메소드에 분기를 하나만 추가하면 됩니다. 이는 SOLID 원칙의 Open-closed 원칙을 따른다고 볼 수 있습니다.
두번째로 테스트가 용이합니다. 팩토리 메소드가 따로 분리되어있기때무에 이 부분을 직접적으로 테스트 가능하고, 필요하다면 자식클래스들도 따로 테스트 할 수 있습니다.
다음은 단점입니다.
첫번째로 코드양이 증가합니다. 결과론적으로 팩토리 클래스를 선언해야되기때문에 근소하지만 추가적인 공수가 발생합니다.
다음은 팩토리메소드의 단점이라고 보기는 어렵지만 실제 동작코드가 팩토리 메소드에 한번 추상화되어있기때문에 전체적인 코드를 파악하기에 조금 더 힘들 수 있습니다.
끝
'디자인패턴' 카테고리의 다른 글
[디자인패턴] Facade패턴 쉽게 이해하기 (0) | 2023.04.26 |
---|