이글은 예전 제 싸이월드 블로그에 작성한 글을 가져온 것입니다.

원문 : http://cy.cyworld.com/home/21147242/post/4DE5EF53C715739A07C68401
원문 작성일 : 2011.06.01
------------------------------------------------------------------------

 

첨부파일 : abstractFactory_by_c.zip

 

이게 다형성이라는 의미가 맞는건지 모르겠습니다.
차라리 디자인 패턴의 abstract factory 에 더 가까운 것 같기도 하고...
둘 다인가? ㅡㅡa

암튼, 제 의도는 아래와 같습니다.
제품을 만들다보면 어떨 땐 Intel 칩을 쓰기도 하고 어떨 땐 Broadcom 칩을 사용할 때도 있습니다.
비록 칩은 다르더라도 Chip_open(), Chip_read(), Chip_write(), Chip_close() 라는 공통 분모가 있습니다.

다시 얘기하면,
UI 개발자는 Intel 칩이든 Broadcom 칩이든 신경 안쓰고 저 4개 함수만 호출하면 되도록 짜고싶은거지요.

UI 에서 Chip_open(), Chip_read(), Chip_write(), Chip_close() 를 호출했을 경우,

Intel칩이라면 최종적으로 아래 함수가 호출되고,
INTEL_Chip_open(), INTEL_Chip_read(), INTEL_Chip_write(), INTEL_Chip_close() 가 호출되고,

Broadcom 칩이라면 최종적으로 아래 함수가 호출되도록 하는겁니다.
BROADCOM_Chip_open(), BROADCOM_Chip_read(), BROADCOM_Chip_write(),BROADCOM_Chip_close()

C++ 에서는 순수가상함수와 다형성을 이용하여 구현할 수 있습니다.
C 에선 함수포인터를 이용하여 비슷하게 구현할 수 있더군요. 형태 기록차원에서 초 간단하게~~
main.c 에서 Chip_open(), Chip_read(), Chip_write(), Chip_close() 가 호출되어집니다.
또한 main.c 가 바라보는 건 chip.h 만 바라봅니다.
chip.c 에서 어떤 칩을 사용할 것인지 결정하고, 그 결정에 따라 Intel 또는 Broadcom 의 함수포인터를
넘겨줍니다.

 

코드 분량을 최소화 했으니 보시는데 어려움이 없을 겁니다.

첨부파일 : abstractFactory_by_c.zip

 

+ Recent posts