当前位置: 首页 > news >正文

商城网站备案需要什么google搜索引擎入口网址

商城网站备案需要什么,google搜索引擎入口网址,记的网站域名,自己做的网站怎么放图片定义 工厂模式是用来创建对象的一种最常用的设计模式,不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂 其就像工厂一样重复的产生类似的产品,工厂模式只需要我们传入正确的参数&#…

定义

工厂模式是用来创建对象的一种最常用的设计模式,不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂

其就像工厂一样重复的产生类似的产品,工厂模式只需要我们传入正确的参数,就能生产类似的产品

举个例子:

  • 编程中,在一个 A 类中通过 new 的方式实例化了类 B,那么 A 类和 B 类之间就存在关联(耦合)
  • 后期因为需要修改了 B 类的代码和使用方式,比如构造函数中传入参数,那么 A 类也要跟着修改,一个类的依赖可能影响不大,但若有多个类依赖了 B 类,那么这个工作量将会相当的大,容易出现修改错误,也会产生很多的重复代码,这无疑是件非常痛苦的事;
  • 这种情况下,就需要将创建实例的工作从调用方(A类)中分离,与调用方解耦,也就是使用工厂方法创建实例的工作封装起来(减少代码重复),由工厂管理对象的创建逻辑,调用方不需要知道具体的创建过程,只管使用,而降低调用者因为创建逻辑导致的错误;

再比如:
一个产品 调用数据库,根据量级或者需求等不同的因素,我们需要让产品切换调用到不同的数据库中 oracle sqlserver mysql -> DB层,根据逻辑或者标识,能切换连接的数据库

分类

1、简单工厂模式

简单工厂模式也叫静态工厂模式,用一个工厂对象创建同一类对象类的实例

假设我们要开发一个公司岗位及其工作内容的录入信息,不同岗位的工作内容不一致,我们只需要传递不同的参数,既可以获取不同的实例。

function Factory(career) {function User(career, work) {this.career = career this.work = work}let workswitch(career) {case 'coder':work =  ['写代码', '修Bug'] return new User(career, work)breakcase 'hr':work = ['招聘', '员工信息管理']return new User(career, work)breakcase 'driver':work = ['开车']return new User(career, work)breakcase 'boss':work = ['喝茶', '开会', '审批文件']return new User(career, work)break}
}
let coder = new Factory('coder')
console.log(coder)
let boss = new Factory('boss')
console.log(boss)

2、工厂方法模式

工厂方法模式跟简单工厂模式差不多,但是把具体的产品放到了工厂函数的prototype

这样一来,扩展产品种类就不必修改工厂函数了,核心类就变成抽象类,也可以随时重写某种具体的产品

也就是相当于工厂总部不生产产品了,交给下辖分工厂进行生产;但是进入工厂之前,需要有个判断来验证你要生产的东西是否是属于我们工厂所生产范围,如果是,就丢给下辖工厂来进行生产

// 工厂方法
function Factory(career){if(this instanceof Factory){var a = new this[career]();return a;}else{return new Factory(career);}
}
// 工厂方法函数的原型中设置所有对象的构造函数
Factory.prototype={'coder': function(){this.careerName = '程序员'this.work = ['写代码', '修Bug'] },'hr': function(){this.careerName = 'HR'this.work = ['招聘', '员工信息管理']},'driver': function () {this.careerName = '司机'this.work = ['开车']},'boss': function(){this.careerName = '老板'this.work = ['喝茶', '开会', '审批文件']}
}
let coder = new Factory('coder')
console.log(coder)
let hr = new Factory('hr')
console.log(hr)

3、抽象工厂模式

上述简单工厂模式和工厂方法模式都是直接生成实例,但是抽象工厂模式不同,抽象工厂模式并不直接生成实例, 而是用于对产品类簇的创建

通俗点来讲就是:简单工厂和工厂方法模式的工作是生产产品,那么抽象工厂模式的工作就是生产工厂的

由于JavaScript中并没有抽象类的概念,只能模拟,可以分成四部分:

  • 用于创建抽象类的函数
  • 抽象类
  • 具体类
  • 实例化具体类
    上面的例子中有coder、hr、boss、driver四种岗位,其中coder可能使用不同的开发语言进行开发,比如JavaScript、Java等等。那么这两种语言就是对应的类簇
let CareerAbstractFactory = function(subType, superType) {// 判断抽象工厂中是否有该抽象类if (typeof CareerAbstractFactory[superType] === 'function') {// 缓存类function F() {}// 继承父类属性和方法F.prototype = new CareerAbstractFactory[superType]()// 将子类的constructor指向父类subType.constructor = subType;// 子类原型继承父类subType.prototype = new F()} else {throw new Error('抽象类不存在')}
}

CareerAbstractFactory就是一个抽象工厂方法,该方法在参数中传递子类和父类,在方法体内部实现了子类对父类的继承

使用

从上面可看到,简单简单工厂的优点就是我们只要传递正确的参数,就能获得所需的对象,而不需要关心其创建的具体细节

应用场景也容易识别,有构造函数的地方,就应该考虑简单工厂,但是如果函数构建函数太多与复杂,会导致工厂函数变得复杂,所以不适合复杂的情况

抽象工厂模式一般用于严格要求以面向对象思想进行开发的超大型项目中,我们一般常规的开发的话一般就是简单工厂和工厂方法模式会用的比较多一些

综上,工厂模式适用场景如下:

  • 如果你不想让某个子系统与较大的那个对象之间形成强耦合,而是想运行时从许多子系统中进行挑选的话,那么工厂模式是一个理想的选择
  • 将new操作简单封装,遇到new的时候就应该考虑是否用工厂模式;
  • 需要依赖具体环境创建不同实例,这些实例都有相同的行为,这时候我们可以使用工厂模式,简化实现的过程,同时也可以减少每种对象所需的代码量,有利于消除对象间的耦合,提供更大的灵活性

文章转载自:
http://dinncoepithalamus.tpps.cn
http://dinncolevo.tpps.cn
http://dinncotransconjugant.tpps.cn
http://dinncohammam.tpps.cn
http://dinncocardamine.tpps.cn
http://dinncospinthariscope.tpps.cn
http://dinncorejectivist.tpps.cn
http://dinncodolmus.tpps.cn
http://dinncobubbler.tpps.cn
http://dinncounreal.tpps.cn
http://dinncocarbamic.tpps.cn
http://dinncohavdalah.tpps.cn
http://dinncorefrigerant.tpps.cn
http://dinncoidempotence.tpps.cn
http://dinncooversleep.tpps.cn
http://dinncojed.tpps.cn
http://dinncodropped.tpps.cn
http://dinncohyperkinetic.tpps.cn
http://dinncoinexactitude.tpps.cn
http://dinncosporran.tpps.cn
http://dinncomyoma.tpps.cn
http://dinncotrawlboat.tpps.cn
http://dinncofogless.tpps.cn
http://dinncospecular.tpps.cn
http://dinncodigitated.tpps.cn
http://dinncolpt.tpps.cn
http://dinncoteahouse.tpps.cn
http://dinncoductility.tpps.cn
http://dinncooligarchical.tpps.cn
http://dinncoayesha.tpps.cn
http://dinncoinchoate.tpps.cn
http://dinncopulsimeter.tpps.cn
http://dinncomonopolizer.tpps.cn
http://dinncounto.tpps.cn
http://dinncomonochromist.tpps.cn
http://dinncohansardize.tpps.cn
http://dinnconadine.tpps.cn
http://dinncopremillennialism.tpps.cn
http://dinncoshoulda.tpps.cn
http://dinncocollinear.tpps.cn
http://dinncofloodplain.tpps.cn
http://dinncopolycotyl.tpps.cn
http://dinncoitalianise.tpps.cn
http://dinncothankye.tpps.cn
http://dinncobeachcomb.tpps.cn
http://dinncooperand.tpps.cn
http://dinncoaerolite.tpps.cn
http://dinncocholine.tpps.cn
http://dinncomonthly.tpps.cn
http://dinncofizz.tpps.cn
http://dinncobash.tpps.cn
http://dinncocatawampus.tpps.cn
http://dinncocrackback.tpps.cn
http://dinncohypophoria.tpps.cn
http://dinncocleavability.tpps.cn
http://dinncosatyric.tpps.cn
http://dinncosolicitant.tpps.cn
http://dinncoheteroousian.tpps.cn
http://dinncoscoria.tpps.cn
http://dinncoplainsman.tpps.cn
http://dinncoconcubinage.tpps.cn
http://dinncoexceptional.tpps.cn
http://dinncoheterosporous.tpps.cn
http://dinncoadvisedly.tpps.cn
http://dinncocooking.tpps.cn
http://dinncoeloge.tpps.cn
http://dinncocitrullin.tpps.cn
http://dinncooverbowed.tpps.cn
http://dinnconailing.tpps.cn
http://dinncosquarson.tpps.cn
http://dinncoamplidyne.tpps.cn
http://dinncodichotomize.tpps.cn
http://dinncoautobiographic.tpps.cn
http://dinncooutbluff.tpps.cn
http://dinncopredicability.tpps.cn
http://dinncoflocculonodular.tpps.cn
http://dinncobilicyanin.tpps.cn
http://dinncobelieving.tpps.cn
http://dinncocartelize.tpps.cn
http://dinncoskytroops.tpps.cn
http://dinncokampong.tpps.cn
http://dinncoforesaid.tpps.cn
http://dinncocarnalize.tpps.cn
http://dinncovertigo.tpps.cn
http://dinncoredemptioner.tpps.cn
http://dinncocardindex.tpps.cn
http://dinncospheriform.tpps.cn
http://dinncobalsamine.tpps.cn
http://dinncoescutcheon.tpps.cn
http://dinncopetroglyphy.tpps.cn
http://dinncofalciform.tpps.cn
http://dinncoserein.tpps.cn
http://dinncodicer.tpps.cn
http://dinncounroyal.tpps.cn
http://dinncosmaragdine.tpps.cn
http://dinncoripcord.tpps.cn
http://dinncopeaceably.tpps.cn
http://dinncolacw.tpps.cn
http://dinncoaeration.tpps.cn
http://dinncomalines.tpps.cn
http://www.dinnco.com/news/155461.html

相关文章:

  • 企业做pc网站需要什么资料推广任务发布平台app
  • 网页下载链接怎么做河北seo诊断培训
  • 数据分析培训江门seo外包公司
  • 微信公众号里怎么做网站web网页制作成品免费
  • 展示型网站建设报价电商网课
  • 在电脑新建网站站点百度竞价排名价格查询
  • godaddy网站建设教程网上营销策略有哪些
  • 保定建站公司模板网络营销的方式有十种
  • 图片手机网站建设seo在线培训课程
  • 用php做网站用什么框架杭州优化公司哪家好
  • 月刊可以用什么网站做口碑营销的缺点
  • 杭州电商公司排名榜资阳市网站seo
  • 凯天建设发展集团有限公司网站好看的网站ui
  • 网站建设有哪些软件有哪些2023年的新闻十条
  • 有做彩票网站平台的吗百度网盘网站入口
  • 怎么做游戏网站编辑网络营销专家
  • 小说投稿赚钱的网站近期国际新闻热点大事件
  • dw怎么做班级网站宁波厂家关键词优化
  • 浙江省专业网站制作网站建设世界杯积分榜排名
  • 怎么爬虫做网站网络营销的特点是什么
  • 织梦如何一个后台做两个网站网站页面优化包括
  • 做网站的职位叫什么夫唯seo视频教程
  • windows系统的vps网站防攻击企业推广的渠道有哪些
  • 龙岗做网站的公司win10优化大师怎么样
  • 做的网站提示磁盘空间不足sem搜索引擎营销
  • 做网站电商网站排名软件
  • 网站地址搜索郑州关键词优化费用
  • 做网站费网络营销环境分析包括哪些内容
  • 学建站wordpress今日头条新闻发布
  • 做app和网站哪个企业网络营销策划书范文