《TypeScript图形渲染实战:2D架构设计与实现》 —2.3.2 Doom3Factory工厂类

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

2.3.2  Doom3Factory工厂类

  下面来模拟微软COM中的方式,不过笔者更喜欢使用静态方法而不是全局方法,因此增加一个名为Doom3Factory的类,用于创建IDoom3Tokenizer接口。具体代码如下:

 

// 该工厂需要被调用方使用,因此export导出

export class Doom3Factory

{

    // 注意返回的是IDoom3Tokenizer接口,而不是Doom3Tokenizer实现类

    public static createDoom3Tokenizer ( ) : IDoom3Tokenizer {

        let ret : IDoom3Tokenizer = new Doom3Tokenizer ( ) ;

        return ret;

    }

}

 

  可以看到,createDoom3Tokenizer使用了static关键字,说明该方法是静态方法,在调用该方法时不需要使用new Doom3Factory方法,可以用类名来直接调用静态方法:Doom3Factory. createDoom3Tokenizer。需要注意的一点是,在接口中不能声明静态方法或属性。

  另外还需要注意的是,在面向对象的语言中(C++、C#、Java等)对于向下转型都需要使用明确的转换操作符,但是向上转型却不需要。例如上面let ret : IDoom3Tokenizer = new Doom3Tokenizer ( ) ; 这句代码,自动将Doom3Tokenizer类转型为IDoom3Tokenizer接口。

  接着在IDoom3Tokenizer接口中增加一个创建IDoom3Token的接口方法并在Doom3Tokenizer中实现该方法。具体代码如下:

 

export interface IDoom3Tokenizer {

    //新增一个创建子接口的方法

    createIDoom3Token ( ) : IDoom3Token;

   

    setSource ( source : string ) : void ;

    reset () : void ;

    getNextToken ( token : IDoom3Token) : boolean ; 

}

 

// 实现新增的接口方法

class Doom3Tokenizer implements IDoom3Tokenizer {

    //创建IDoom3Token接口

    public createIDoom3Token ( ) : IDoom3Token {

        return new Doom3Token ( ) ;

    }

}

  关于上述使用模式,会在后面的代码中经常用到,因此特别说明一下。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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