日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript

發布時間:2025/7/14 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式-创建型模式-工厂模式(工厂三兄弟) 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。