ITK 插拔式工厂

        ITK 中在输入/输出结构后面的原理叫做插拔式工厂。这个概念被解释在图 7-1 所示的UML 图表里。从用户的观点看,可靠的读、写文件的类是 itk::ImageFileReader 和itk::ImageFileWriter。这两个类不知道读或写特殊文件格式如 PNG DICOM 的细节,它们所做的就是分派用户的要求给知道文件格式细节的类。这些类是 itk::ImageIO 类。ITK 授权机构使用户能够通过添加新类给 ImageIO 来扩展被支持的文件格式的数量。
ImageFileReader 和 ImageFileWriter 的每一个例子都有一个指向 ImageIO 对象的一个指针。如果指针是空的,读或写一个图像是不可能的,图像文件 reader/writer 必须决定由哪一个 ImageIO 类去执行 IO 操作。这个通过传递文件名给中央类、itk::ImageIOFactory 和确定读或写用户指定的文件的能力的 ImageIO 的子类来做。这个通过图 7-2 所示右边的例子进行介绍。

        来源于 ImageIO 的每一个类必须提供一个达到 ImageIO 类要求的关联的工厂类。例如PNG 文件,有一个知道如何读文件的 itk::PNGImageIO 的对象和有一个能够构建PNGImageIO 对象并能返回指向它的一个指针的 itk::PNGImageIOFactory 类。每一次一个新的文件格式被添加时( 例如一个新的 ImageIO 子类被创建 ) ,一个工厂类必须作为在图 7-3 所示介绍的 ImageIOFactory 类的一个父类被执行。
        例如,为了读 PNG 文件,一个 PNGImageIOFactory 文件被创建并被图 7.2 中左边介绍的中央 ImageIOFactory 单独类配准。当 ImageFileReader 要求 ImageIOFactory 具有作为一个读文件的 ImageIO 能力, ImageIOFactory 将会按照配准工厂的列表进行迭代,并询问它们是
否知道如何去读文件。可以作出肯定地响应的工厂将用于创建特殊的 ImageIO 案例,这个案例将会被返回到 ImageFileReader 并用于执行读操作。
        在大多数情况下,机构对于仅仅与 ImageFileReader ImageFileWriter 结合的用户来说是透明的。然而,明确地选择 ImageIO 的对象类型也是可能的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值