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

  • 工厂设计模式一些使用理念,通常想要去隐藏实现细节,想象看不让你new就给你个对象使用,给你方便的同时对你隐藏细节。
  • 抽象工厂,意味着,什么样的工厂生产什么样的产品,有点绕,不理解的话,多念几遍体会一下。其实真的就一句话:什么样的工厂生产什么样的产品。
/**
 * 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
这个产品是做什么的? 这个是宝马,用来开的

你可能感兴趣的:(Typescript工厂设计模式(什么样的工厂生产什么样的东西))