设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript
生活随笔
收集整理的這篇文章主要介紹了
设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設計模式-創建型模式-工廠模式(工廠三兄弟) TypeScript
簡單工廠模式
定義一個接口,三個具體類。然后書寫如下,通過選擇,生產出相應的對象
// 定義Shape接口 interface Shape {draw():void; }// 下面為產品類 // 產品 Circle class Circle implements Shape{public constructor(){}public draw():void{} }// 產品Rectangle class Rectangle implements Shape{public constructor(){}public draw():void{} }// 下面為生產產品的工廠,根據選擇,生產出不同的產品 class ShapeFactory {constructor(){}public static getShape(typeShape:string):Shape{if(typeShape === "Circle"){return new Circle();}if (typeShape === "Rectangle"){return new Rectangle();}if (typeShape === null){return null;}return null;} }// 下面編寫測試 let test:Shape = ShapeFactory.getShape("Circle"); // 調用draw方法 test.draw();編譯后的js如下
// 下面為產品類 // 產品 Circle var Circle = /** @class */ (function () {function Circle() {}Circle.prototype.draw = function () {};return Circle; }()); // 產品Rectangle var Rectangle = /** @class */ (function () {function Rectangle() {}Rectangle.prototype.draw = function () {};return Rectangle; }()); // 下面為生產產品的工廠,根據選擇,生產出不同的產品 var ShapeFactory = /** @class */ (function () {function ShapeFactory() {}ShapeFactory.getShape = function (typeShape) {if (typeShape === "Circle") {return new Circle();}if (typeShape === "Rectangle") {return new Rectangle();}if (typeShape === null) {return null;}return null;};return ShapeFactory; }()); // 下面編寫測試 var test = ShapeFactory.getShape("Circle"); // 調用draw方法 test.draw();利用反射改進
class ShapeFactory1 {constructor(){};public static getShape<T extends Shape>(c:{new ():T}):T{ // C類型為類return new c();} } let test = ShapeFactory1.getShape(Circle); test.draw(); var ShapeFactory1 = /** @class */ (function () {function ShapeFactory1() {};ShapeFactory1.getShape = function (c) {return new c();};return ShapeFactory1; }()); var test = ShapeFactory1.getShape(Circle); test.draw();工廠方法
即,將工廠拆分
// 工廠方法 class CircleFactory{constructor(){}public static getShape():Shape{return new Circle();} } class RectangleFactory{constructor(){}public static getShape():Shape{return new Rectangle();} } let test = CircleFactory.getShape(); test.draw();抽象工廠
抽象工廠比較簡單不在闡述。
www.iming.info
轉載于:https://www.cnblogs.com/melovemingming/p/10035177.html
總結
以上是生活随笔為你收集整理的设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java的集合:List、Set和Map
- 下一篇: 神经网络-预测财产损失