设计模式-创建型模式-工厂模式(工厂三兄弟) 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相关推荐
- 设计模式(创建型)之建造者模式(Builder Pattern)
PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...
- java设计模式——创建型之建造者模式
自大学课程初识设计模式以来,就越发觉得有必要系统学习一下设计模式. 刚好在实习前准备期间课比较少,抽出一点时间整理一下记一些笔记,复制粘贴比较多. 笔记比较适合学习过设计模式的同学. Builder ...
- 设计模式-创建型模式-工厂模式(工厂三兄弟)
设计模式-创建型模式-工厂模式(工厂三兄弟) 工厂模式分为简单工厂,工厂方法,抽象工厂. 简单工厂模式 一个接口,三个具体类,一个工厂,通过选择,生产出对应的对象. package demo2;pub ...
- 设计模式-创建型模式-抽象工厂模式
工程源码:设计模式-创建型模式-抽象工厂模式https://download.csdn.net/download/qq_40788199/85544119 码云:设计模式-创建型模式-抽象工厂模式ht ...
- 设计模式-创建型模式-简单工厂模式
工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...
- 设计模式-创建型模式-工厂方法模式
工程源码:c++设计模式-创建型模式-工厂方法模式https://download.csdn.net/download/qq_40788199/85541617 码云:https://gitee.co ...
- 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern。
设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. 文章目录 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. eg. 简单工厂模式. 结构. 优 ...
- Java设计模式之创建型:原型模式
一.什么是原型模式: 原型模式主要用于对象的创建,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.UML类图如下: 原型模式的核心是就是原型类 Prototype,Prototype ...
- Java设计模式之创建型:建造者模式
一.什么是建造者模式: 建造者模式将复杂产品的创建步骤分解在在不同的方法中,使得创建过程更加清晰,从而更精确控制复杂对象的产生过程:通过隔离复杂对象的构建与使用,也就是将产品的创建与产品本身分离开来, ...
最新文章
- python【数据结构与算法】多字段条件排序
- 怎么排号_春节将至,那些过年不回家的人们都是怎么过年的?
- INTEL和AMD两大巨头的前身
- Redhat5下haproxy+keepalived+nginx配置笔记
- 学弟学妹看过来,小白到大神必经之路!
- 刷leetcode第五题-最长回文字符串
- SH760二自由度系统解析法求全解-过渡及稳态过程
- 对int array进行排序
- Cyborg Genes UVA - 10723
- python基础学习1-字典的使用
- golang 定义一个空切片_Golang切片 一个隐讳的坑
- UDP报文观测以及DNS的工作原理
- 使用Tushare库下载股票数据
- 学会2种方法,小白也能快速产出标准的Axure原型
- SpringBoot非官方教程 | 终章:文章汇总(转载https://blog.csdn.net/forezp/article/details/70341818 本文出自方志朋的博客)
- 我的程序员之路(13)——2017年度总结
- 三星s9更新android9.0 体验,国行三星Galaxy S9系列更新Android 9.0 界面更漂亮
- 数据相关的在职研究生_又一所双一流大学给予部分博士研究生退学处理,至少33名!...
- linux下安装 postgresql 14
- 高匿ip代理工具的特殊功能?