设计模式-创建型模式-工厂模式(工厂三兄弟) 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相关推荐

  1. 设计模式(创建型)之建造者模式(Builder Pattern)

    PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...

  2. java设计模式——创建型之建造者模式

    自大学课程初识设计模式以来,就越发觉得有必要系统学习一下设计模式. 刚好在实习前准备期间课比较少,抽出一点时间整理一下记一些笔记,复制粘贴比较多. 笔记比较适合学习过设计模式的同学. Builder ...

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

    设计模式-创建型模式-工厂模式(工厂三兄弟) 工厂模式分为简单工厂,工厂方法,抽象工厂. 简单工厂模式 一个接口,三个具体类,一个工厂,通过选择,生产出对应的对象. package demo2;pub ...

  4. 设计模式-创建型模式-抽象工厂模式

    工程源码:设计模式-创建型模式-抽象工厂模式https://download.csdn.net/download/qq_40788199/85544119 码云:设计模式-创建型模式-抽象工厂模式ht ...

  5. 设计模式-创建型模式-简单工厂模式

    工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...

  6. 设计模式-创建型模式-工厂方法模式

    工程源码:c++设计模式-创建型模式-工厂方法模式https://download.csdn.net/download/qq_40788199/85541617 码云:https://gitee.co ...

  7. 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern。

    设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. 文章目录 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. eg. 简单工厂模式. 结构. 优 ...

  8. Java设计模式之创建型:原型模式

    一.什么是原型模式: 原型模式主要用于对象的创建,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.UML类图如下: 原型模式的核心是就是原型类 Prototype,Prototype ...

  9. Java设计模式之创建型:建造者模式

    一.什么是建造者模式: 建造者模式将复杂产品的创建步骤分解在在不同的方法中,使得创建过程更加清晰,从而更精确控制复杂对象的产生过程:通过隔离复杂对象的构建与使用,也就是将产品的创建与产品本身分离开来, ...

最新文章

  1. python【数据结构与算法】多字段条件排序
  2. 怎么排号_春节将至,那些过年不回家的人们都是怎么过年的?
  3. INTEL和AMD两大巨头的前身
  4. Redhat5下haproxy+keepalived+nginx配置笔记
  5. 学弟学妹看过来,小白到大神必经之路!
  6. 刷leetcode第五题-最长回文字符串
  7. SH760二自由度系统解析法求全解-过渡及稳态过程
  8. 对int array进行排序
  9. Cyborg Genes UVA - 10723
  10. python基础学习1-字典的使用
  11. golang 定义一个空切片_Golang切片 一个隐讳的坑
  12. UDP报文观测以及DNS的工作原理
  13. 使用Tushare库下载股票数据
  14. 学会2种方法,小白也能快速产出标准的Axure原型
  15. SpringBoot非官方教程 | 终章:文章汇总(转载https://blog.csdn.net/forezp/article/details/70341818 本文出自方志朋的博客)
  16. 我的程序员之路(13)——2017年度总结
  17. 三星s9更新android9.0 体验,国行三星Galaxy S9系列更新Android 9.0 界面更漂亮
  18. 数据相关的在职研究生_又一所双一流大学给予部分博士研究生退学处理,至少33名!...
  19. linux下安装 postgresql 14
  20. 高匿ip代理工具的特殊功能?

热门文章

  1. 解决IE只能用管理员身份运行才能正常
  2. Gitlab服务器搭建
  3. LDPC译码算法代码概述
  4. 掌握 PHP 中的正则表达式 二
  5. Sql 中取小数点后面两位小数.
  6. Python3实现邮箱发送
  7. 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google
  8. Python学习之路:NumPy初识
  9. 数据库:数据库优化(一)
  10. Android — 使用 SharedPreferences 本地保存 key-value 数据