factory method 패턴

[네이버 지식백과] factory method 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주))


예제1) http://dextto.tistory.com/140

예제2) http://kingoh.tistory.com/entry/Factory-Method-%ED%8C%A8%ED%84%B4


우선 위의 예제를 통해 Java에선 어떻게 Factory method를 구현했는지 보고 오시면 더 좋을 거 같습니다. C에선 class라는 개념이 없기 때문에 어떻게 보면 이전 글들에서 계속해서 Factory method를 써왔습니다. 이번엔 다시 한번 재탕으로 Factory method를 살펴 보도록 하겠습니다.


이번 예제는 display를 구현해 보도록 하겠습니다. firmware의 대부분의 display는 메모리에 rgb color를 버퍼에 넣고 한번에 뿌리는 형식으로 구현합니다. 우선 interface를 보도록 하겠습니다. 이전글 strategy(http://cpattern.tistory.com/9) 패턴의 open, close, write, read 구조로 구성이 되어있습니다. 



display_t라고 명명했지만 device_t로 명명해도 됩니다. 그러면 여러 device에서도 사용이 가능해 집니다. 아래 코드에서 실제로 구현해 보도록 하겠습니다. 24번째 줄 처럼 내부 static 함수에 연결하여 최종적으로 this의 pointer를 넘겨주게 됩니다. 바로 이부분이 factory method입니다. 직접 객체를 생성하는 것이 아니라 setup_display를 이용해 객체를 생성하여 리턴하는 부분입니다. factory method의 장점은 객체를 생성하여 꼭 필요한 시퀀스를 밟을 수 있게 할 수 있다는 점입니다. 바로 26번째 줄이 그 역할을 합니다. 단순히 포인터만 넘기는 것이 아닌 open을 해주는 것이지요. 더 필요한 설정이 있으면 setup_display에서 해주던가 open 함수 안에 넣으면 됩니다. 



implement는 각 display 맞게 코딩하면 완성됩니다. 이제 main.c를 보도록 하겠습니다. 아래와 같이 포인터를 얻어와 사용하면 됩니다. 실제 JAVA에서는 factory 추상 class가 있지만 C에서는 굳이 만들 필요는 없습니다. C에서 워낙 객체를 구현하면 복잡해 질 수 있기 때문에 별도로 factory를 구현하면 더욱 복잡해 질 수도 있습니다. simple하게 이정도 선에서 머무는게 좋을 거 같습니다.



위와 같이 구현하면 display가 바뀌어도 main.c를 바꾸지 않고도 display를 쉽게 교체할 수 있습니다. factory method는 코드를 쉽고 간단하게 구조화 할 수 있다는 장점이 있습니다.








'▶ 이전글 > C Pattern' 카테고리의 다른 글

Adapter 패턴 - 2  (0) 2018.02.24
Adapter 패턴 - 1  (0) 2018.02.23
C의 app 만들기 - 3 : app  (0) 2018.01.31
C 언어에서 this 구현2  (0) 2018.01.27
C의 app 만들기 - 2 : main에서 실제 사용하기  (0) 2018.01.25