- 工廠設(shè)計(jì)模式一些使用理念坯钦,通常想要去隱藏實(shí)現(xiàn)細(xì)節(jié),想象看不讓你new就給你個(gè)對(duì)象使用侈玄,給你方便的同時(shí)對(duì)你隱藏細(xì)節(jié)婉刀。
- 抽象工廠,意味著序仙,什么樣的工廠生產(chǎn)什么樣的產(chǎn)品突颊,有點(diǎn)繞,不理解的話潘悼,多念幾遍體會(huì)一下律秃。其實(shí)真的就一句話:什么樣的工廠生產(chǎn)什么樣的產(chǎn)品。
/**
* 1治唤,創(chuàng)建一個(gè)抽象的工廠類(lèi)棒动,抽象工廠,就是不知道要生產(chǎn)什么的工廠
* 2宾添,創(chuàng)建一個(gè)抽象類(lèi)要執(zhí)行的方法船惨,意味著你只知道他要做這樣一個(gè)事情,但是怎么做的需要具體的實(shí)例決定
*
*/
abstract class Factory {
public abstract factoryMethod(): Product;
public someOperation():string {
const product = this.factoryMethod();
return `這個(gè)產(chǎn)品是做什么的缕陕? ${product.operation()}`;
}
}
interface Product {
operation(): string;
}
class BMWFactory extends Factory {
public factoryMethod():Product{
return new BMW();
}
}
class BMW implements Product {
public operation():string {
return "這個(gè)是寶馬粱锐,用來(lái)開(kāi)的"
}
}
class Foxconn extends Factory {
public factoryMethod():Product{
return new IPhone();
}
}
class IPhone implements Product {
public operation():string {
return "手機(jī),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
這個(gè)產(chǎn)品是做什么的扛邑? 手機(jī)怜浅,iPhone
這個(gè)產(chǎn)品是做什么的? 這個(gè)是寶馬蔬崩,用來(lái)開(kāi)的