Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript

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

原创
作者头像
mySoul
发布于 2018-11-28 13:52:18
发布于 2018-11-28 13:52:18
4390
举报
文章被收录于专栏:mySoulmySoul

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

简单工厂模式

定义一个接口,三个具体类。然后书写如下,通过选择,生产出相应的对象

代码语言:txt
AI代码解释
复制
// 定义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如下

代码语言:txt
AI代码解释
复制
// 下面为产品类
// 产品 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();

利用反射改进

代码语言:txt
AI代码解释
复制
class ShapeFactory1 {
	constructor(){

	};
	public static getShape<T extends Shape>(c:{new ():T}):T{	// C类型为类
		return new c();
	}
}
let test = ShapeFactory1.getShape(Circle);
test.draw();
代码语言:txt
AI代码解释
复制
var ShapeFactory1 = /** @class */ (function () {
    function ShapeFactory1() {
    }
    ;
    ShapeFactory1.getShape = function (c) {
        return new c();
    };
    return ShapeFactory1;
}());
var test = ShapeFactory1.getShape(Circle);
test.draw();

工厂方法

即,将工厂拆分

代码语言:txt
AI代码解释
复制
// 工厂方法
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
设计模式-创建型模式-工厂模式(工厂三兄弟)
设计模式-创建型模式-工厂模式(工厂三兄弟) 工厂模式分为简单工厂,工厂方法,抽象工厂。 简单工厂模式 一个接口,三个具体类,一个工厂,通过选择,生产出对应的对象。 package demo2; public class Circle implements Shape{ public Circle() { } @Override public void draw() { } } package demo2; public class Rectangle implements S
mySoul
2018/11/27
3900
深入理解工厂模式
Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_Guide
用户2164320
2018/06/14
8780
python 设计模式
工厂模式是一种创建型设计模式。它的核心思想是定义一个创建对象的接口(可以是抽象类或者接口),让子类决定实例化哪一个类。工厂方法把实例化推迟到子类,这样就可以将对象的创建和使用分离,从而提高系统的灵活性和可扩展性。
闻说社
2025/07/10
1160
python 设计模式
抽象工厂模式
抽象工厂模式Abstract Factory是通过对类的工厂抽象使其业务用于对产品类簇的创建,而不仅仅是负责创建某一类产品的实例,抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类,抽象工厂模式又称为Kit模式,属于对象创建型模式。
WindRunnerMax
2020/10/27
4190
深入理解工厂模式:创建可复用的对象实例
简单工厂模式通过一个工厂类来创建所有产品的实例。客户端只需要提供给工厂类一个参数,工厂类根据这个参数决定实例化哪个具体产品类的对象并返回给客户端。
洁洁
2024/01/26
2660
深入理解工厂模式:创建可复用的对象实例
【python设计模式-创建型】抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
西西嘛呦
2020/08/26
4400
【python设计模式-创建型】抽象工厂模式
五、工厂模式 ( Factory Pattern )
工厂模式在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象
botkenni
2022/09/07
3400
五、工厂模式 ( Factory Pattern )
设计模式-工厂模式
简单工厂模式的定义:定义一个工厂类,根据传入的参数不同返回不同的实例,被创建的实例具有共同的父类或接口。
架构狂人
2023/10/05
2660
设计模式-工厂模式
设计模式-工厂模式
工厂模式是创建型模式的一种,是通过一个工厂的方式直接生产出不同的产品,比如你需要一部手机,那具体我直接给苹果或者华为,你不需要关注具体是怎么生产的,只要拿结果(手机)就可以了。
逍遥壮士
2020/09/18
3750
设计模式-工厂模式
23天读懂23种设计模式:工厂方法模式(创建型)
创建型模式是用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其他关联对象的创建、组合和表示方式。
后台技术汇
2022/05/28
2380
23天读懂23种设计模式:工厂方法模式(创建型)
简单工厂模式
简单工厂模式又叫静态工厂方法,由一个工厂对象决定创建某一种对象类的实例,这种类型的设计模式属于创建型模式,在简单工厂模式中,可以根据参数的不同返回不同类的实例,简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
WindRunnerMax
2020/09/10
3510
最全工厂设计模式案例详解,不服来辩!
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,今天我们一起来彻底解析一下它。
Java极客技术
2022/12/02
4580
最全工厂设计模式案例详解,不服来辩!
工厂模式
// Factory Pattern // 意图: 定义一个创建对象的工厂接口, 让子类自己决定实例化哪一个工厂类。 // 解决问题: 解决接口选择的问题。 // 何时使用: 明确计划在不同条件下创建不同的实例 // 如何解决: 在主程序中实现工厂接口, 返回一个抽象的产品。 // step1 : 创建一个接口 Shape.cs public interface Shape() { void draw(); } // step2: 创建实现接口的实体类 // 1. 创建矩形 Rectangle.
用户2434869
2018/09/12
3920
设计模式-工厂方法模式(三)
具体工厂类SquareFactory:public class SquareFactory implements ShapeFactory { private double side; public SquareFactory(double side) { this.side = side; } @Override public Shape createShape() { return new Square(side); }}具体工厂类Rect
堕落飞鸟
2023/05/03
1400
工厂模式
下面结合定义和应用实例以及代码来给出我对这三种模式的理解,设计模式只是思想,融会贯通才是重要的
Sun琼燕
2020/04/24
4850
设计模式之工厂模式
创建型模式之工厂模式 什么是工厂模式 工厂模式是java中最常见的创建型模式,客户端在不知道创建逻辑的情况下,只需要在工厂中直接创建即可 简单工厂模式 简单工厂在创建对象的时候不需要知道具体的创建逻辑
爱撒谎的男孩
2018/05/25
5130
☀️一张思维图带大家了解Java常见设计模式☀️《❤️记得收藏❤️》
设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解,本文主要列举了常用的几种设计模式。
苏州程序大白
2021/08/31
6480
☀️一张思维图带大家了解Java常见设计模式☀️《❤️记得收藏❤️》
六、抽象工厂模式 ( Abstract Factory Pattern )
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂
botkenni
2022/09/07
2930
六、抽象工厂模式 ( Abstract Factory Pattern )
创造型模式——工厂模式
概述:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
栗筝i
2022/12/01
3570
创造型模式——工厂模式
Java设计模式学习笔记—抽象工厂模式
文章最后“Java设计模式笔记示例代码整合”为本系列代码整合,所有代码均为个人手打并运行测试,不定期更新。本节内容位于其AbstractFactory包(package)中。
WindCoder
2018/09/20
4180
Java设计模式学习笔记—抽象工厂模式
相关推荐
设计模式-创建型模式-工厂模式(工厂三兄弟)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档