Typescript设计模式

Typescript工厂设计模式(什么样的工厂生产什么样的东西)

2019-08-13  本文已影响0人  做实事的人
/**
 * 1,创建一个抽象的工厂类,抽象工厂,就是不知道要生产什么的工厂
 * 2,创建一个抽象类要执行的方法,意味着你只知道他要做这样一个事情,但是怎么做的需要具体的实例决定
 * 
 */

 abstract class Factory {

    public abstract factoryMethod(): Product;

    public someOperation():string {
        const product = this.factoryMethod();
        return `这个产品是做什么的? ${product.operation()}`;
    }

 }

 interface Product {
    operation(): string;
 }

 class BMWFactory extends Factory {
    
    public factoryMethod():Product{
        return new BMW();
    }
 }

 class BMW implements Product {
    public operation():string {
        return "这个是宝马,用来开的"
    }
 }


 class Foxconn extends Factory {
    
    public factoryMethod():Product{
        return new IPhone();
    }
 }

 class IPhone implements Product {
    public operation():string {
        return "手机,iPhone"
    }
 }
 


 function clientCode(factory:Factory):void{
    console.log(factory.someOperation());
 }


 clientCode(new Foxconn());
 clientCode(new BMWFactory());


PS C:\Users\Aniu\Documents> tsc .\Factory.ts
PS C:\Users\Aniu\Documents> node .\Factory.js
这个产品是做什么的? 手机,iPhone
这个产品是做什么的? 这个是宝马,用来开的
上一篇 下一篇

猜你喜欢

热点阅读