百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术流 > 正文

小白的前端练级之路——简单工厂模式

citgpt 2024-07-04 14:54 12 浏览 0 评论

今天是清明小长假的最后一天了,想想明天开始又要早上六点半出门晚上十点到家的日子,士心就有一点蛋蛋的忧伤。。。不知道小伙伴们有没有和我一样的感受。忧伤归忧伤,我们的学习还得继续,前两天士心学习了面向对象编程,和面象对象编程的三大特征:封装,继承,多态。不过是骡子是马总要拉上战场遛一遛,士心已经迫不及待要把这两天学习的功夫拿出来大显身手了。。。


士心今天一上班,就接到了项目经理分派过来的任务:“士心,这几天学习得怎么样?这里有一个登录模块你能不能来处理一下?”“没问题 ”士心信心满满地一口答应下来。“很好,那我先来跟你讲讲需求,当用户没有输入用户名或者输入的内容不符合规范的时候,就弹出一个自定义警示框,提示用户名不能为空或是输入的用户名有误”“好的”士心想了想,就写下了下面的代码

小白的前端练级之路——简单工厂模式

"这么快就写好了,不错,用户密码这里也有一个需求,当用户输入的密码错误时提示一句’用户名或密码有误,请重新输入‘" 士心心里暗喜啊,这前两天才学的面向对象编程马上就用上了,小case

还没等士心高兴几秒钟,项目经理又发话了,“不过这里有些变化,就是在警示框中加一个忘记密码的按钮”“再加一个按钮?那之前写的功能不是复用不了了?又得创建 一个类了”

“士心,做完了吗?登录成功后这里还要加一个提示框,除了有确定取消按钮,再提示一句’欢迎回来,请输入您今天的心情吧‘”士心:“。。。,又要加一个新类了”

花了老半天的时间,士心总算是把从登录验证到登录成功这一套流程写完了。士心这边刚写完,那边老G就来找士心了:“士心,你的登录模块的提示框写好了吗?我这边有个注册功能也要用到提示框,把你写的方法借我用一下”“好啊,我是通过对类实例化对象来实现的”“那太好了,我拿过来直接用就可以了,这可省下我不少事”。于是士心就把刚写好的三个类发给了老G,

“怎么这么多呀?这样吧,你写给简单工厂给我吧,可以吗?”

“简单工厂?是什么?”

“是一种设计模式啊,我的意思是你给我三个类,我每次创建时还要找到对应的类,太麻烦了,所以你最好封装在一个函数里,这样我只要记住 这个函数,然后通过这个函数 就可以创建 我需要的对象来使用。如果还有其它人要使用的话,也不用再关注创建 这些对象到底依赖于哪个类了,我们知道这个函数 就可以了,这个函数通常就被称为工厂函数,这种模式就叫简单工厂模式”

“我懂了,我现在就加上工厂方法”


老G看了看士心写的工厂方法,说道:“不错,不过。。。你之前写的三个类有很多地方是相同的,比如都 有共有属性this.content,原型共有方法:show,你看我这样改行不行?”

士心看了看老G写的这段代码"我写的是通过类实例 化对象创建的,你写的是通过创建一个新对象然后包装增强其属性和功能来实现的"

“没错,还有一点,你写的那些类如果继承同一父类,那么他们的父类原型上的方法是可以共用的,而我这种创建 的对象都是新的个体,所以他们的方法就不能共用了,选择哪种工厂方式来实现还要看你是如何分析你的需求的”“我明白了”

晚上回到家中,士心在网上查了些资料,然后结合今天的工作做了一下总结:工厂模式就是通过专门定义一个类来负责创建其他类的实例,如果这些类有共同的逻辑,就可以把这些共同的东西提取出来,放在一个抽象类中,然后让具体产品继承抽象类。

相关推荐

js中arguments详解

一、简介了解arguments这个对象之前先来认识一下javascript的一些功能:其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数...

firewall-cmd 常用命令

目录firewalldzone说明firewallzone内容说明firewall-cmd常用参数firewall-cmd常用命令常用命令 回到顶部firewalldzone...

epel-release 是什么

EPEL-release(ExtraPackagesforEnterpriseLinux)是一个软件仓库,它为企业级Linux发行版(如CentOS、RHEL等)提供额外的软件包。以下是关于E...

FullGC详解  什么是 JVM 的 GC
FullGC详解 什么是 JVM 的 GC

前言:背景:一、什么是JVM的GC?JVM(JavaVirtualMachine)。JVM是Java程序的虚拟机,是一种实现Java语言的解...

2024-10-26 08:50 citgpt

使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
跨域(CrossOrigin)

1.介绍  1)跨域问题:跨域问题是在网络中,当一个网络的运行脚本(通常时JavaScript)试图访问另一个网络的资源时,如果这两个网络的端口、协议和域名不一致时就会出现跨域问题。    通俗讲...

微服务架构和分布式架构的区别

1、含义不同微服务架构:微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并...

深入理解与应用CSS clip-path 属性
深入理解与应用CSS clip-path 属性

clip-pathclip-path是什么clip-path 是一个CSS属性,允许开发者创建一个剪切区域,从而决定元素的哪些部分可见,哪些部分会被隐...

2024-10-25 11:51 citgpt

HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
Request.ServerVariables 大全

Request.ServerVariables("Url")返回服务器地址Request.ServerVariables("Path_Info")客户端提供的路...

python操作Kafka

目录一、python操作kafka1.python使用kafka生产者2.python使用kafka消费者3.使用docker中的kafka二、python操作kafka细...

Runtime.getRuntime().exec详解

Runtime.getRuntime().exec详解概述Runtime.getRuntime().exec用于调用外部可执行程序或系统命令,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。...

promise.all详解 promise.all是干什么的
promise.all详解 promise.all是干什么的

promise.all详解promise.all中所有的请求成功了,走.then(),在.then()中能得到一个数组,数组中是每个请求resolve抛出的结果...

2024-10-24 16:21 citgpt

Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解

取消回复欢迎 发表评论: