《TypeScript图形渲染实战:2D架构设计与实现》 —2.3 使用工厂模式和迭代器模式

举报
华章计算机 发表于 2019/12/11 17:11:03 2019/12/11
【摘要】 本节书摘来自华章计算机《TypeScript图形渲染实战:2D架构设计与实现》 一书中第2章,第2.3.1节,作者是步磊峰。

2.3  使用工厂模式和迭代器模式

  我们发现,当使用面向接口的编程方式时,可以将接口和实现进行分离,并且使用TypeScript的export关键字仅仅导出了IDoom3Token和IDoom3Tokenizer接口,但是没有导出Doom3Token和Doom3Tokenizer这两个实现类。

  这样做的好处是隐藏实现细节,让调用方根本不需要了解具体是如何做的,只需调用接口就可以完成其需求。但是也带来了一个问题:由于没有导出实现类,调用方无法使用例如 new Doom3Tokenizer ( )的方式来初始化实现类,那么调用方该如何初始化接口呢?

2.3.1  微软COM中创建接口的方式

  在回答这个问题前,我们来看一下微软的COM(Component Object Modal,组件对象模型)中是如何创建接口的。

  以微软的DirectX 9为例,在DirectX 9 SDK包中提供了一个全局函数Direct3DCreate9,调用该全局函数后会获得IDirect3D9接口的指针,然后可以通过IDirect3D9指针的CreateDevice接口方法,创建IDirect3DDevice9接口指针,接着可以使用IDirect3DDevice9接口的CreateTexture和CreateRenderTarget等接口方法,创建用于渲染的各种资源。

  其他的COM组件对象创建方式类似,它们的共同点都是精心安排各个接口的层次,通过全局工厂函数Direct3DCreate9创建最顶层的接口,然后将上级接口作为工厂,创建下一级接口(使用CreateXXX的方法)。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。