理解&#106avascript中的设计模式

2023-08-24    分类: 网站建设

百度权重查询 站长交易 友情链接交换 网站监控 服务器监控 seo监控

可靠的设计模式是可维护软件的基石,假如你曾参与技术面试,很有可能被问到关于设计模式的这类东西。下面这个指南中,我们将学习一些今天就可以用得着的设计模式。

什么是设计模式?

简单来说,设计模式就是对特定类型问题重用的软件解决方案,这些问题在软件开发的时候经常会碰到,通过许多年的实践,专家对一些相似地问题总结出一些方法,这些方法就封装成为一种设计模式,所以:

模式是一种经验证的用于解决软件开发问题的方案。

模式是可扩展的,因为他们经常被结构化而且你需要遵循某些规则。

对于相似的问题,模式可被重用

在接下来的教程中,我们将直接给出一些设计模式的例子。

设计模式的种类

软件开发中,设计模式通常分为几种类别,在这篇教程中我们重点介绍以下三种:

1、创建型模式专注于构建对象或者类,对象的创建听起来很简单(在某些情况下),但是大型应用需要控制对象的创建过程。

2、结构型设计模式专注于管理对象之间的关系使得应用是用一种可扩展的架,,结构型模式关键点是确保在应用程序中部分改变不会影响其他部分。

3、行为模式专注于对象间的通信

你可能在读完这些简介的描述后仍然觉得有问题,这很正常,一旦我们看完了这些模式的深入介绍后,问题也会变得明朗起来,所以接着往下看吧。

类在&#106avascript中的注重点:</strong></p><p>当我们读设计模式时,你经常会提及到类和对象。这很疑惑,因为&#106avascript没有真正&ldquo;类&rdquo;的构造,一个更合适的术语叫&ldquo;数据类型&rdquo;。</p><p><strong>&#106avascript中的数据类型:</strong></p><p>&#106avascript是一门面向对象的语言,一个对象继续自其他对象,这个概念以原型继续著称。一个数据类型可以通过构造函数创建,就像:</p><blockquote><p>function Person(config) {</p><p>this.name = config.name;</p><p>this.age = config.age;</p><p>}</p><p>Person.prototype.getAge = function() {</p><p>return this.age;</p><p>};</p><p>var tilo = new Person({name:&ldquo;Tilo&rdquo;, age:23 });</p><p>console.log(tilo.getAge());</p></blockquote> <p>当方法定义在Person数据类型中时注重prototype的使用,因为多个Person对象将引用统一个prototype,这样就许可 getAge()方法可以被所有的Person数据类型的实例共享。而不是每个实例都重新定义一次,除此之外,任何继续自Person的数据类型都可以访问getAge()方法。</p><p><strong>处理私稀有据</strong></p><p>在&#106avascript中另一个常见的问题是没有真正意义上的私有变量,然而我们可以使用闭包</p><p>去模拟私有变量,考虑下面这代码片段:</p><blockquote><p>var retinaMacbook = (function() {</p><p>//Private variables</p><p>var RAM, addRAM;</p><p>RAM = 4;</p><p>//Private method</p><p>addRAM = function (additionalRAM) {</p><p>RAM += additionalRAM;</p><p>};</p><p>return {</p><p>//Public variables and methods</p><p>USB: undefined,</p><p>insertUSB: function (device) {</p><p>this.USB = device;</p><p>},</p><p>removeUSB: function () {</p><p>var device = this.USB;</p><p>this.USB = undefined;</p><p>return device;</p><p>}</p><p>};</p><p>})();</p></blockquote> <p>在上面这个例子中,我们创建了一个retinaMacbook对象,含有公有和私有变量及方法,可以这样来使用它:</p><blockquote><p>retinaMacbook.insertUSB(&ldquo;myUSB&rdquo;);</p><p>console.log(retinaMacbook.USB); //logs out &ldquo;myUSB&rdquo;</p><p>console.log(retinaMacbook.RAM) //logs out undefined</p></blockquote> <p>在&#106avascript中函数和闭包可以做更多的事,但是我们在这个教程中没法涉及到方方面面,我们简短的学习了&#106avascript的数据类型和私有变量。现在我们可以学习设计模式了。</p><p><strong>创建型设计模式:</strong></p><p>有许多种不同的创建设计模式,但是在这里我们主要讨论两种,建造模式(Builder)和原型模式(Prototype)。</p><p><strong>建造模式:</strong></p><p>建造模式通常用于web开发,有时你在使用它你却还没意识到。简而言之,这个模式可以定义如下:</p><p>&ldquo;使用建造模式许可我们仅仅通过指定类型和内容来构造一个对象,我们不需要明确的创建对象。&rdquo;</p><p>例如,你可能无数次的使用jQuery:</p><blockquote><p>var myDiv = $(&lsquo;&lt;div id=&ldquo;myDiv&rdquo;&gt;This is a div.&lt;/div&gt;&rsquo;);</p><p>//myDiv now represents a jQuery object referencing a DOM node.</p><p>var someText = $(&lsquo;&lt;p/&gt;&rsquo;);</p><p>//someText is a jQuery object referencing an HTMLParagraphElement</p><p>var input = $(&lsquo;&lt;input /&gt;&rsquo;);</p></blockquote> <p>看看上面这三个例子,个,传递了一个&lt;div/&gt;元素附带一些内容,第二个,传递一个空的&lt;p&gt;标签,第三个,传递一个&lt;input/&gt;元素。这三个例子的效果都是一样的:返回一个jQuery对象的引用指向一个DOM节点。</p> <p> 新闻标题:<a href="/news33/278233.html">理解&#106avascript中的设计模式</a> <br> 分享网址:<a href="/news33/278233.html">/news33/278233.html</a> </p> <p> <a href="/" target="_blank">成都网站建设公司</a>_<a href="https://www.cdcxhl.cn/" target="_blank">创新互联</a>,为您提供<a href="/news/ChatGPT/">ChatGPT</a>、<a href="/news/appkaifa/">App开发</a>、<a href="/news/shop/">星空体育app最新版本(2024已更新)</a>、<a href="/news/keywordsseo/">关键词优化</a>、<a href="/news/xiangyingshi/">响应式网站</a>、<a href="/news/zuo/">做网站</a> </p> <p class="adpic"> <a href="/service/ad.html" target="_blank" class="ad">广告</a> <a href="" target="_blank" class="adimg"><img src=""></a> </p> <p class="copy"> 声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: <a href="/" target="_blank">创新互联</a> </p> </div> <div class="newsmorelb"> <p>猜你还喜欢下面的内容</p> <ul> <li> <a href="/news32/278232.html">以马蜂窝为例,分析在线旅游网站创业高失败率的原因</a> <span>2023-08-24</span> </li><li> <a href="/news30/278230.html">众多站长前期就幻想着一切推广都免费的旗子闯出一片天</a> <span>2023-08-24</span> </li><li> <a href="/news28/278228.html">建站公司如何如客户实现共赢</a> <span>2023-08-24</span> </li><li> <a href="/news26/278226.html">网站开发中如何把控网站后台及程序的质量</a> <span>2023-08-24</span> </li><li> <a href="/news24/278224.html">网站建站没有考虑SEO优化的弊端</a> <span>2023-08-24</span> </li><li> <a href="/news22/278222.html">APP定制开发前需要做哪些预备工作</a> <span>2023-08-24</span> </li><li> <a href="/news20/278220.html">合理的设计外贸网站</a> <span>2023-08-24</span> </li> </ul> </div> </div> <div class="col-lg-3 noneb"> <a href="/wangzhandingzhi.html" title="成都定制网站网页设计" target="_blank"><img src="/upload/news/dingzhiwangzhan.png" alt="成都定制网站网页设计" class="img-responsive"></a> <div class="bkright"> <p><a href="/news/jianshe/">网站建设知识</a></p> <ul> <li> <a class="text_overflow" href="/news31/278231.html">公司网站定制系统有哪些</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news29/278229.html">关键词seo排名掉了是什么原因</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news27/278227.html">企业建网站容易疏忽哪些问题?</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news25/278225.html">学习网站优化要走那几步</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news23/278223.html">创新互联观点离职伙伴的话,引发了我一些的思考</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news21/278221.html">一个好的网站设计具备哪些特点</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news19/278219.html">怎么样提高关头词排名的例子</a> <span>2023-08-24</span> </li> <li> <a class="text_overflow" href="/news18/278218.html">函数要多小才够好——谈小函数之道</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news17/278217.html">茂名网站建设_阳江网站设计_网站制作SEO优化</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news16/278216.html">芜湖网站制作应该注意哪些问题?</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news15/278215.html">海北网站建设时如何选择字体样?</a> <span>2023-08-24</span> </li><li> <a class="text_overflow" href="/news14/278214.html">丰台网站建设:网页设计的重要意义是什么?</a> <span>2023-08-24</span> </li> </ul> </div> <div class="bkright tag"> <p><a href="/hangye/" target="_blank">行业网站建设</a></p> <ul> <li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="/hangye/jizhuangxiang/" target="_blank">集装箱</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="/hangye/hgdsj/" target="_blank">火锅店设计</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="/hangye/huaxiang/" target="_blank">花箱</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="/hangye/xuanchuanpian/" target="_blank">宣传片制作</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="/hangye/zbljbc/" target="_blank">自拌料搅拌车</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="/hangye/zufadianji/" target="_blank">发电机租赁</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="/hangye/vr/" target="_blank">VR全景</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="/hangye/gaokongche/" target="_blank">高空作业车租赁</a> </li> </ul> </div> </div> </div> <footer> <div class="carousel-inner footjz"> <div class="container"> <i class="icon iconfont zbw"></i> 高品质定制 <i class="icon iconfont"></i> 跨终端自动兼容 <i class="icon iconfont"></i> 节约开发成本 <i class="icon iconfont"></i> 开发周期短 <i class="icon iconfont"></i> 一体化服务 <button type="button" class="btn btn-default btn-lg" onClick="window.location.href='tencent://message/?uin=631063699&Site=&Menu=yes'"> 立即开始2800定制网站建设</button> <button type="button" class="btn btn-default btn-xs" onClick="window.location.href='tencent://message/?uin=631063699&Site=&Menu=yes'"> 2800定制网站建设</button> </div> </div> <div class="carousel-inner bqsy"> <div class="container"> <div class="lxfs"> <h4 class="yutelnone">028-86922220 13518219792</h4> <h4 class="yutelblock"><a href="tel:02886922220">028-86922220</a> <a href="tel:13518219792">13518219792</a></h4> <a class="btn btn-default" href="tencent://message/?uin=532337155&Site=&Menu=yes" role="button">网站建设<span>QQ</span>:532337155</a> <a class="btn btn-default" href="tencent://message/?uin=631063699&Site=&Menu=yes" role="button">营销推广<span>QQ</span>:631063699</a> <a class="btn btn1 btn-default" href="mqqwpa://im/chat?chat_type=wpa&uin=532337155&version=1&src_type=web&web_src=oicqzone.com" role="button">网站制作<span>QQ</span>:532337155</a> <a class="btn btn1 btn-default" href="mqqwpa://im/chat?chat_type=wpa&uin=631063699&version=1&src_type=web&web_src=oicqzone.com" role="button">营销推广<span>QQ</span>:631063699</a> <a class="btn btn-default nonea" href="tencent://message/?uin=1683211881&Site=&Menu=yes" role="button">售后QQ:1683211881</a> <div class="dz">专注: <a href="http://www.cdkjz.cn/" target="_blank">网站设计制作</a><a href="http://www.cxhljz.cn/" target="_blank">成都网站设计</a><a href="https://www.xwcx.net/" target="_blank">服务器托管</a><a href="http://www.kswsj.com/" target="_blank">成都制作网站</a><a href="http://www.kswcd.com/" target="_blank">定制网站建设</a> <address>地址:成都太升南路288号锦天国际A幢10楼</address> </div> </div> <div class="bzdh dz"><img src="../imges/bottom_logo.png" alt="创新互联"> <p><a href="/menu.html" target="_blank">成都创新互联科技有限公司</a><br> Tel:400-028-6601(7x24h)</p></div> </div> </div> </footer> <div class='link'> <a href='http://www.verzuimpartners.com'>2024欧洲杯竞猜官网</a> | <a href='http://www.its-our-pleasure.com'>BET体育官方网站(中国)有限公司</a> | <a href='http://www.vspflooring.com'>星空体育·(StarSky Sports)</a> | <a href='http://www.zeusalarm.com'>bet官方(中国)有限公司</a> | <a href='http://www.dragongardentogo.com'>在线体育竞猜(中国)有限公司</a> | <a href='http://www.terranuragica.com'>BET体育|中国有限公司</a> | <a href='http://www.haygg.com'>bat365在线平台·(中国)官方网站</a> | <a href='http://www.jebsenwineestates.com'>半岛·体育(中国)官方网站</a> | </div> </body> </html>