이글은 예전 제 싸이월드 블로그에 작성한 글을 가져온 것입니다.
원문 : 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
'삽질미학 > C,C++' 카테고리의 다른 글
C++ 코드를 C에서 사용하기 (0) | 2016.10.14 |
---|---|
C 에서 STL map 컨테이너를... - SCL 소개 (0) | 2016.10.14 |
map 컨테이너를 이용해 클래스 멤버함수의 콜백함수 등록과 호출하기 (0) | 2016.10.14 |
fseek(), feof() 함수 사용 시 주의 사항 (0) | 2016.10.13 |
특정 비트열 가져오는 GETBIT() 함수 (0) | 2016.10.13 |