- 工厂设计模式一些使用理念,通常想要去隐藏实现细节,想象看不让你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
这个产品是做什么的? 这个是宝马,用来开的