[네이버 지식백과]iterator 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주))
설명하기 어려워서 퍼왔습니다. 아무튼 한번 구현해 보도록 하겠습니다. 먼저 중요한 헤더 파일입니다. 보시다 시피 8bit 자료형을 취급하는 iterator입니다. setup_iterator은 커스텀되어있는 자료형과 연결한는 함수입니다. 즉 사용자가 만든 자료형과 인터페이스와 연결하는 부분입니다. C에서는 인터페이스가 없기 때문에 이러한 방법으로 인터페이스 비슷한 것을 구현합니다.
다음 코드에서 인터페이스 비스므레한 것을 만들어 보도록 하겠습니다. 최대 지원되는 iterator은 10개 입니다. 즉 10개의 8bit 자료구조형과 연결될 수 있습니다. 이렇게 C에서는 갯수를 제한해야 합니다. Java의 new 처럼 자유자재로 생성하지 못하고 일일히 만들어 줘야합니다. 이런점에서는 Java보다 C의 생산성이 떨어지네요.
딱히 어려운 부분은 없는 것 같습니다. 사용자가 만든 자료형과 위의 함수를 연결해 주고 각각 호출되는 함수를 Java의 인터페이스처럼 구현해 주면 됩니다. 그럼 바로 8bit circle queue 자료형을 만들어서 연결시켜보도록 하겠습니다. 먼저 헤더입니다. Java로 보면 하나의 instance가 될 부분입니다. 하나의 프로그램에서 생성된 하나의 instance가 고유하듯 C에서도 고유하게 ID를 명시적으로 썼습니다.
이 instance의 본체는 아래의 코드와 같습니다. 위의 iterator header의 내용을 구현할 예정입니다. 각각의 사용자가 입맛대로 만든 자료형은 구조가 다르기 때문에 알아서 그 특성대로 만드셔야 합니다. 여기서는 queue이기 때문에 그에 맞게 구현할 예정입니다. init_queue_8bit() 함수는 iterator interface와 연결하는 부분입니다.
이렇게 구현하면 이 8bit queue에 접근하기 위해서는 QUEUE_8BIT_ID를 가지고 iterator.c의 함수를 이용하면됩니다. 위와 같이 구현하면 어떠한 자료형도 같은 메소드(함수)를 통해 접근이 가능해 집니다. 그러나 내부 구현된 방식은 각각 특성에 맞게 달라지게 됩니다. 지금은 8bit 자료형으로 구현했지만, void, int, 등도 가능합니다. 그리고 queue 뿐만 아니라 stack도 구현이 가능합니다.
'▶ 이전글 > C Pattern' 카테고리의 다른 글
Scheduler 구현하기 (0) | 2018.01.11 |
---|---|
C 언어에서 this 구현 (0) | 2015.01.20 |
C로 만드는 Interface (0) | 2014.10.15 |
Singleton 패턴 (0) | 2014.10.13 |
Template method 패턴 (0) | 2014.10.02 |