typescript 实现 创建工厂。。
来源:互联网 发布:js jsonarray add 编辑:程序博客网 时间:2024/06/06 04:44
class Person implements ISay{ person() { console.log('**** PERSON ****') } say() { console.log("i'm a person"); }}class Dog implements ISay{ dog() { console.log("**** DOG ****"); } say() { console.log("wang!wang!wang!"); }}class Cat implements ISay{ cat() { console.log("**** CAT ****"); } say() { console.log("miao~~~~"); }}class Mouse implements ISay{ say() { console.log("zhizhizhi....zhizhi.."); }}////////////////////////////////interface ISay{ say();}interface NoParamConstructor<T> { new (): T;}class Say<T extends ISay> implements ISay { instance_t: T; constructor(ctor: NoParamConstructor<T>) { this.instance_t = new ctor(); } say() { this.instance_t.say(); }}class PersonSay extends Say<Person>{ constructor() { super(Person); }}////////////////////////////////////////////////////function create<T>(t:T):Say<T> { let typeName: string=t.name; let codeStr: string=""; codeStr += "var "+typeName+"Say = (function (_super) {" codeStr += " __extends("+typeName+"Say, _super);" codeStr += " function "+typeName+"Say() {" codeStr += " return _super.call(this, "+typeName+") || this;" codeStr += " }" codeStr += " return "+typeName+"Say;" codeStr += "}(Say));" eval(codeStr); let result = eval("new " + typeName + "Say()"); return result; }let p = create(Person);p.say();p.instance_t.person();let d = create(Dog);d.say();d.instance_t.dog();let c = create(Cat);c.say();c.instance_t.cat();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class Base { hi() { console.log("i'm Base"); }}class Sub extends Base { hi() { console.log("i'm Sub"); }}class Gen<T extends Base> { constructor(private type) { } New() : T { return new this.type(); }}function createNew<T extends Base>(t: T): T { let typename: string = eval("t.name"); let result = eval("new Gen(" + typename + ").New()"); return result;}var test1 = new Gen<Base>(Base);test1.New().hi();var test2 = new Gen<Sub>(Sub);test2.New().hi();////////////////////////////////////////////////////////console.log("///////////////////");createNew(Base).hi();createNew(Sub).hi();
阅读全文
0 0
- typescript 实现 创建工厂。。
- objective c实现配置文件+反射 工厂创建
- 使用DAO工厂创建实现类对象
- objective c实现配置文件+反射 工厂创建
- 创建型模式之工厂模式实现
- 手工方式实现Spring工厂创建对象
- TypeScript实现贪吃蛇小游戏
- typescript
- TypeScript
- typeScript
- typescript
- TypeScript
- TypeScript
- typescript
- TypeScript
- TypeScript
- TypeScript
- TypeScript
- 文件排序(用C语言描述)
- JAVA的那些事儿
- 学习使用JUnit4进行单元测试
- 文件排序(C语言描述)(在堆中进行)
- 链表反转
- typescript 实现 创建工厂。。
- for循环中的索引值
- 个人博客开通
- 084-C++
- LeetCode打卡
- 085-C++
- 086-C++
- Java-面向对象
- 087-C++