- 이것은 기본적으로 중앙 클래스 itk::ImageIOFactory에 파일 이름을 전달함으로써 행해지고 사용자 지정 파일을 읽거나 또는 쓰기 가능한 ImageIO의 어떤 하위 클래스를 정하는 것을 요구함으로써 행해진다
- ImageIO를 상속 받은 각 클래스들은 ImageIO 클래스의 인스턴스를 생성할 수 있는 연관된 팩토리 클래스를 제공해야 한다
- 예를 들면, PNG 파일에 대해, 이 이미지 파일을 읽는 방법을 아는 itk::PNGImageIO 객체가 있고 PNGImageIO 객체를 생성하고 그것의 포인터를 리턴하는 itk::PNGImageIOFactory 클래스가 있다
- 매번, 새로운 파일 포맷은 추가되고(즉, 새로운 ImageIO 클래스가 생성된다), 팩토리는 ImageIOFactory 클래스의 자식 클래스로 구현된다
- 예를 들면, PNG 파일을 읽기 위해, PNGImageIOFactory 가 생성되고 중앙의 ImageIOFactory 싱글톤 클래스에 등록된다
- ImageFileReader가 filename을 가지고 확인할 수 있는 파일을 읽을 수 있는 ImageIO에 대한 ImageIOFactory를 요청할 때 ImageIOFactory는 등록된 팩토리의 리스트를 순환할 것이고 그 파일을 읽는 방법을 알고 있는 것들 중에서 요청할 것이다
- 확실하게 반응하는 팩토리는 ImageFileReader에 리턴할 구체적인 ImageIO 인스턴스를 생성하는데 사용될 것이고 읽기 연산을 수행하기 위해 사용된다
- 대부분의 경우에 메커니즘은 ImageFileReader와 ImageFileWriter에 오직 반응하는 사용자에 투명하다
- 그러나 사용하는 ImageIO 객체의 타입을 명시적으로 선택하는 것도 가능하다
- 이것은 다음의 예제에 의해 설명된다
댓글