内容简介:定义一个接口,三个具体类。然后书写如下,通过选择,生产出相应的对象编译后的js如下即,将工厂拆分
定义一个接口,三个具体类。然后书写如下,通过选择,生产出相应的对象
// 定义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();
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- 简单工厂模式、工厂模式、抽象工厂模式的解析-iOS
- Java 设计模式之工厂方法模式与抽象工厂模式
- 设计模式之工厂模式(为什么很多人觉得工厂模式没有用)
- 设计模式 —— 工厂模式
- 设计模式 -- 工厂模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C Primer Plus(第6版)中文版
普拉达 (Stephen Prata) / 姜佑 / 人民邮电出版社 / 2016-4-1 / CNY 89.00
《C Primer Plus(第6版)中文版》详细讲解了C语言的基本概念和编程技巧。 《C Primer Plus(第6版)中文版》共17章。第1、2章介绍了C语言编程的预备知识。第3~15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串函数、内存管理、文件输入输出、结构、位操作等。第16章、17章介绍C......一起来看看 《C Primer Plus(第6版)中文版》 这本书的介绍吧!