专业编程基础技术教程

网站首页 > 基础教程 正文

Javascript设计模式之工厂模式,快来学习一下吧

ccvgpt 2024-08-16 15:06:30 基础教程 14 ℃

前言

设计模式并不是某一种语言所特有的,而是一种设计理念,因为之前写过Java,所以对Java的常用设计模式有一定了解。现在已经在写前端,目前在学习Javascript的设计模式相关知识点,我们就一起来慢慢学习吧。

Javascript设计模式之工厂模式,快来学习一下吧

Javascript设计模式

工厂模式

工厂模式设计目标是:根据不同的需求创建实例化对象。我们将通过一个特定的需求来逐渐深入的讲解工程模式的用法。

我们需要达到的一个需求是,做一个音乐播放器,这个播放器有四个按钮,分别是上一首、下一首、播放暂停、静音。

针对上面的需求,我们先按照最简单的工厂模式写一个方法。

最简单的工厂模式

通过给action传递不同的参数,可以获取不同的播放器状态。

面向对象理念

但是上述的方法并没有用到面向对象的理念,我们使用面向对象的思维重新修改上面的方法。

面向对象的工厂模式

在上述面向对象的工厂模式中,建立一个WangyiMusicAction对象,然后扩展其prototype属性,这样每个实例都会有自己的方法。

改进工厂模式

上面的工厂模式中,只能生成WangyiMusicAction的对象,如果我还要生成一个QQMusic和BaiduMusic,XiamiMusic,只有每个music都得写一遍方法,这是不值得推荐的。

我们可以通过一个Factory来动态创建各种类型的Music,首先是WangyiMusicAction。

WangyiMusicAction

然后是QQMusicAction。

QQMusicAction

最后是两种的Factory方法,并通过Factory生成一个QQMusic的实例。

Factory方法

优化工厂模式

但是在上面的工厂模式中,我们发现WangyiMusic和QQMusic的prototype属性可以封装成一个对象,用作父类继承。

  • 定义父类

定义父类

  • 继承

通过修改prototype属性实现继承。

继承

  • 建立Factory工厂

建立工厂动态生成WangyiMusic或者QQMusic,然后生成一个QQMusic实例,并调用相应的方法。

建立Factory

通过上述的继承父类方案,可以优化代码结构,工厂模式也使用的更加简洁。

总结

今天这篇文章主要讲的是Javascript设计模式中常用的工厂模式,大家有没有收获呢?

最近发表
标签列表