앞서서 팩토리 메서드 패턴을 알아보았았다. 이번에는 추상 팩토리 패턴에 대해서 알아보도록 하자.

 

추상 팩토리 패턴이란?

· 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공하는 패턴.

※ 키트(Kit) 패턴이라고도 불림.

 

 

우리가 편의점에서 자주 사먹는 삼각 김밥을 예를 들어보겠다. 삼각 김밥은 삼각 김밥을 만드는 어느 공장에서 만들어져서 편의점으로 운반되었을 것이다.

하지만 그 삼각 김밥 안에 들어가는 재료인 참치라던가 고기, 야채들은 각각의 참치 공장, 고기 공장, 야채 공장에서 다 손질되어서 삼각 김밥을 만드는 공장으로 운반되었을 것이다.

이와 같은 모양을 추상 팩토리 패턴에 대입해서 생각해보면 될 것 같다.

 

언제 추상 팩토리를 사용해야 할까?

· 객체가 생성되거나 구성 · 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때.

· 여러 제품군 중 하나를 선택해서 시스템을 설정해야 하고 한번 구성한 제품을 다른 것으로 대체할 수 있을 때.

· 관련된 제품 객체들이 함께 사용되도록 설계되었고, 이 부분에 대한 제약이 외부에도 지켜지도록 하고 싶을 때.

· 제품에 대한 클래스 라이브러리를 제공하고, 그들의 구현이 아닌 인터페이스를 노출시키고 싶을 때.

 

구조

· AbstractFactory : 개념적 제품에 대한 객체를 생성하는 연산으로 인터페이스를 정의함.

· ConcreteFactory : 구체적인 제품에 대한 객체를 생성하는 연산을 구현함.

· AbstractProduct : 개념적 제품 객체에 대한 인터페이스를 정의함.

· ConcreteProduct : 구체적으로 팩토리가 생성할 객체를 정의하고, AbstractProduct가 정의하는 인터페이스를 구현함.

· Client : AbsctractFactory와 AbstractProduct 클래스에 선언된 인터페이스를 사용함.

 

추상 팩토리 패턴의 장점

· 구체적인 클래스가 사용자에게 분리되어 사용자 코드에는 나타나지 않음.

· 제품군을 쉽게 대체할 수 있도록 함.

· 제품 사이의 일관성을 증진시킴.

 

[프로그래밍/디자인 패턴] - 팩토리 메서드(Factory Method) 패턴

 

 

[참고] GoF의 디자인 패턴


WRITTEN BY
김치치즈스마일
세계정복!

,
IT 트렌드 스페셜 리포트 2018
국내도서
저자 : 김석기,김승열,정도희
출판 : 한빛미디어 2017.11.10
상세보기

 

 

최근에 친구를 통해서 놀라운 이야기를 들은 적이 있었다. 요리 업계에서 일하는 친구이기 때문에 한 식당에 면접을 보러 갔는데 그 곳에 있는 쉐프가 요리에 관한 이야기가 아닌 4차 산업혁명에 관한 이야기를 계속 했다고 한다.

IT 업계에 있는 분이 아닌데도 이렇게 4차 산엽혁명에 관한 관심이 많고 아는 것도 많다는 사실이 무척 놀라웠다. (편견일 수도 있겠지만...)

그런데 조금 생각해보니 그 이유를 알 수 있을 것 같았다. IT업계의 종사자가 아니거나 IT에 관심이 없는 사람들도 알파고란 존재를 알거나 적어도 한 번 이상은 들어봤을 것이며 유치원생 혹은 초등학생들도 포켓몬 고라는 게임을 통해서 증강현실(AR)을 체험해봤을 것이다.

이처럼 IT 트렌드 스페셜 리포트 2018는 현재 트렌드이자 내년에도 트렌드라고 여겨질 IT 기술들을 7가지로 정리하여 설명한 책이다.

 

 

먼저, 이 책에서 선정한 7가지 IT 트렌드는 인공지능, 블록체인, 가상현실(AR, VR, MR), 챗봇, 사물 인터넷, 스마트 자동차, 인공지능 비서 서비스로 선정하였다.

물론, 인공지능이라는 범주 안에 챗봇이나 인공지능 비서 서비스가 포함될 수 있다고 생각하지만 이 책에서는 따로 분류해서 설명하고 있다.

또한 이 책의 큰 장점은 단순히 어떤 기술인가를 나열한 것이 아니라 트렌드를 이야기하는 책이기 때문에 비즈니스 관점에서 이 기술이 현재 어디서, 어떻게 쓰이고 있는지를 설명하였으며 덧붙여서 테크 관점에서 이 분야의 전문가들이 실질적으로 이 기술에는 어떤 것들이 쓰이는지를 설명하고 있다.

이렇게 두 가지 관점에서 설명을 하고 있기 때문에 자칫 지루하게 느껴질 수 있는 내용을 가지고 쉽게 설명하고 있으며 실제 현재 어떤 서비스들에 쓰이고 있는지를 파악하기가 쉬웠다.

반면에, 정말 이 서비스들에는 어떤 기술들이 들어가고 그 기술들은 어떤 방식인지 깊게 알고 싶어하는 사람들에게는 다소 가볍거나 이미 알고 있는 이야기들로 보일 수 있다.

또 다른 이 책의 장점으로는 그 기술에 관해서 스타트 얼리, 드라이브 슬로울리, 리치 세이플리라는 세 가지 기준으로 나누어서 혹시나 이 사업에 관심있는 사업가들에게는 이 시장이 어떤 상태인지를 알려주고 있다. (이 책을 지으신 저자분들과 전문가들의 의견이기는 하나, 사업의 절대적 기준이라고 생각하면 안 될 것 같다)

 

 

그래서 이 책을 추천하고픈 독자층은 평소 4차 산업혁명에는 어떤 것들이 있는지 궁금했던 사람들, IT 사업을 하고 싶은데 최근에 트렌드가 어떤지 알고 싶어하는 사람들, 마지막으로 자신이 하고 있는 사업이 현재는 어떻게 발전하였는지 파악하고 싶은 사람들에게 추천한다.

나 또한 개발자로서 이미 해당 기술들에 평소 관심이 많아 어느정도 알고 있었고 어디에서 어떻게 쓰이는지도 알고 있었다.

그래서 비즈니스 관점은 재미있게 읽고 넘어갔고 테크 리포트에 있는 기술적인 내용들을 조금 더 중점으로 읽었다.

 

 

※ 상세 내용은 맨 위에 썸네일을 누르거나 중간에 있는 IT 트렌드 스페셜 리포트 2018을 누르셔서 확인하시기 바랍니다.

 

 

 

ps : 리뷰어로 이 책을 재미있게 읽을 수 있는 기회를 주신 한빛미디어 여러분께 감사의 인사를 드립니다.

 

 

 


WRITTEN BY
김치치즈스마일
세계정복!

,

흔히 팩토리하면 우리는 무언가 기계로 물건들을 계속해서 제조하는 그런 공장을 떠올릴 것이다.

그렇다면 팩토리 메서드 패턴은 우리가 알고있는 공장과 어떤 연관 관계가 있는 것일까?

이제부터 팩토리 메서드 패턴에 대해서 알아보자.

 

팩토리 메서드 패턴이란?

· 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 하는 패턴.

※ 가상 생성자(Virtual Constructor) 패턴이라고도 불림.

 

· 서브클래스 중 어느 것을 생성해야 하는지에 대한 정보를 캡슐화하고, 클라이언트 코드와 서브클래스의 코드를 뗴어냄.

· 서브클래스에서 어떤 클래스를 생성할지 오버라이드 한 메서드가 바로 팩토리 메서드.

· 객체를 제조하는 방법을 알기 때문에 팩토리 메서드라고 불림.

 

언제 팩토리 메서드 패턴을 사용해야 할까?

· 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측할 수 없을 때.

· 생성할 객체를 기술하는 책임을 자신의 서브클래스가 지정했으면 할 때.

· 객체 생서으이 책임을 몇 개의 보조 서브클래스 가운데 하나에게 위임하고, 어떤 서브클래스가 위임자인지에 대한 정보를 국소화 시키고 싶을 때.

 

구조

· Product : 팩토리 메서드가 생성하는 객체의 인터페이스를 정의함.

· ConcreteProduct : Product 클래스에 정의된 인터페이스를 실제로 구현함.

· Creator : Product 타입의 객체를 반환한느 팩토리 메서드를 선언함. Creator 클래스는 팩토리 메서드를 기본적으로 구현하는데, 이 구현에서는 ConcreteProduct 객체를 반환함. 또한 Product 객체의 생성을 위해 팩토리 메서드를 호출함.

· ConcreteCreator : 팩토리 메서드를 재정의하여 ConcreteProduct의 인스턴스를 반환함.

 

팩토리 메서드 패턴의 장점

· 팩토리 메서드 패턴은 응용프로그램에 국한된 클래스가 코드에 종속되지 않도록 해줌.

· 서브클래스에 대한 훅(hook) 메서드를 제공.

· 병렬적인 클래스 계통을 연결하는 역할을 담당.

 

[프로그래밍/디자인 패턴] - 추상 팩토리(Abstract Factory) 패턴

 

 

[참고] GoF의 디자인 패턴


WRITTEN BY
김치치즈스마일
세계정복!

,