位置: 编程技术 - 正文

JavaScript设计模式开发中组合模式的使用教程(js设计模式有什么用)

编辑:rootadmin

推荐整理分享JavaScript设计模式开发中组合模式的使用教程(js设计模式有什么用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js中的设计模式,js的设计模式,js 设计模式,js 设计模式,javascript 设计,js设计模型,JAVASCRIPT设计模式与开发实践,JAVASCRIPT设计模式与开发实践,内容如对您有帮助,希望把文章链接给更多的朋友!

我们平时开发过程中,一定会遇到这种情况:同时处理简单对象和由简单对象组成的复杂对象,这些简单对象和复杂对象会组合成树形结构,在客户端对其处理的时候要保持一致性。比如电商网站中的产品订单,每一张产品订单可能有多个子订单组合,比如操作系统的文件夹,每个文件夹有多个子文件夹或文件,我们作为用户对其进行复制,删除等操作时,不管是文件夹还是文件,对我们操作者来说是一样的。在这种场景下,就非常适合使用组合模式来实现。

基本知识

组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式主要有三个角色:(1)抽象组件(Component):抽象类,主要定义了参与组合的对象的公共接口(2)子对象(Leaf):组成组合对象的最基本对象(3)组合对象(Composite):由子对象组合起来的复杂对象理解组合模式的关键是要理解组合模式对单个对象和组合对象使用的一致性,我们接下来说说组合模式的实现加深理解。组合模式算是为在页面动态创建UI量身定做的,你可以只使用一条命=命令为许多对象初始化一些复杂的或者递归的操作.组合模式提供了两个有点:(1)允许你将一组对象当成特定的对象.组合对象(A composite)和组成它的子对象实现相同的操作.对组合对象执行某一个操作将会使该对象下的所有子对象执行相同的操作.因此你不仅可以无缝的替换单个对象为一组对象集合,反过来也一样.这些独立的对象之间即所谓松散耦合的.(2)组合模式会将子对象集组合成树结构并且允许遍历整个树.这样可以隐藏内部实现并且允许你以任意的方式组织子对象.这个对象(组合对象)的任何代码将不会依赖内部子对象的实现.

组合模式的实现

(1)最简单的组合模式

HTML文档的DOM结构就是天生的树形结构,最基本的元素醉成DOM树,最终形成DOM文档,非常适用适用组合模式。我们常用的jQuery类库,其中组合模式的应用更是频繁,例如经常有下列代码实现:

JavaScript设计模式开发中组合模式的使用教程(js设计模式有什么用)

这句简单的代码就是获取class包含test的元素,然后进行addClass和removeClass处理,其中不论$(“.test”)是一个元素,还是多个元素,最终都是通过统一的addClass和removeClass接口进行调用。我们简单模拟一下addClass的实现:

这段代码简单的模拟了addClass的实现(暂不考虑兼容性和通用性),很简单地先判断节点类型,然后根据不同类型添加className。对于NodeList或者是Node来说,客户端调用都是同样的使用了addClass这个接口,这个就是组合模式的最基本的思想,使部分和整体的使用具有一致性。

(2)典型的例子

前面我们提到一个典型的例子:产品订单包含多个产品子订单,多个产品子订单组成一个复杂的产品订单。由于Javascript语言的特性,我们将组合模式的三个角色简化成2个角色:(1)子对象:在这个例子中,子对象就是产品子订单(2)组合对象:这里就是产品的总订单假设我们开发一个旅游产品网站,其中包含机票和酒店两种子产品,我们定义了子对象如下:

上面的代码定义了两个类:机票订单类和酒店订单类,每个类都有各自的订单创建方法。接下来我们创建一个总订单类:

这个对象主要有3个成员:订单列表,添加订单的方法,创建订单的方法。在客户端使用的时候如下:

客户端调用展示了两种方式,一种是单一的创建机票订单,一种是创建多张订单,但最终都是通过create方法进行创建,这就是一个很典型的组合模式的应用场景。

总结组合模式并不难理解,它主要解决的是单一对象和组合对象在使用方式上的一致性问题。如果对象具有明显的层次结构并且想要统一地使用它们,这就非常适合使用组合模式。在Web开发中,这种层次结构非常常见,很适合使用组合模式,尤其是对于JS来说,不用拘泥于传统面向对象语言的形式,灵活地利用JS语言的特性,达到对部分和整体使用的一致性。(1)使用组合模式的场景在遇到下面两种情况的时候才使用组合模式A.含有某种层级结构的对象集合(具体结构在开发过程中无法确定)B.希望对这些对象或者其中的某些对象执行某种操作(2)组合模式的缺点因为组合对象的任何操作都会对所有的子对象调用同样的操作,所以当组合的结构很大时会有性能问题。还有就是使用组合模式封装HTML时要选择合适的标签,比如table就不能用于组合模式,叶子节点不明显

设计模式中的facade外观模式在JavaScript开发中的运用 概念外观模式(门面模式),是一种相对简单而又无处不在的模式。外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用。外观模式并

详解JavaScript实现设计模式中的适配器模式的方法 有的时候在开发过程中,我们会发现,客户端需要的接口和提供的接口发生不兼容的问题。由于特殊的原因我们无法修改客户端接口。在这种情况下,

Adapter适配器模式在JavaScript设计模式编程中的运用分析 定义适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不

标签: js设计模式有什么用

本文链接地址:https://www.jiuchutong.com/biancheng/370046.html 转载请保留说明!

上一篇:设计模式中的组合模式在JavaScript程序构建中的使用(设计模式三种)

下一篇:设计模式中的facade外观模式在JavaScript开发中的运用(设计模式中的行为模式)

  • 不予认定一般纳税人
  • 如何做进项税额转出,又认证不了发票
  • 征地补偿费谁来支付
  • 从价定率的计算公式
  • 实收资本账
  • 固定资产十几万可以直接入费用吗
  • 营改增之后对企业的影响
  • 已投入使用的机器设备才能计提折旧对吗
  • 研发费用的台账有哪些
  • 设备税款
  • 收到供应商违约金 发票
  • 商场交的房租押金可以退吗
  • 收到车辆保险返还会计分录
  • 企业可以同时按一般纳税和按小规模纳税吗?
  • 可以自行设计的软件
  • 报税报错了怎么办?
  • 只有进项没有销项怎么报税
  • 合同到期退房子,租金退吗
  • 不锈钢材料开票
  • 收入未实现成本怎么进
  • 母公司对子公司的控股比例
  • 小规模核定销售额是什么意思
  • 金税三期啥意思
  • 当月支付的费用需要计提吗
  • 购买方现金折扣计入什么科目
  • 支付土地补偿款能以收据入账吗
  • 凤尾蕨的养殖方法
  • 图灵sdk
  • 以前年度应付账款做到制造费用如何改账
  • 怎么制作网线接口
  • win10显示无法连接蓝牙
  • 前端如何用canvas绘制座位图
  • win10怎么投影到手机
  • 企业销售商品怎么做分录
  • 鱼香肉丝的做法的教程
  • OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading “C:\ProgramData\Anaconda3\lib\site-packages\to
  • Uncaught TypeError TypeError: Cannot set properties of null (setting ‘onclick‘)的解决办法
  • 固定资产售卖的账务处理
  • 更改税种需要哪些资料
  • yii框架连接数据库
  • 暂估入库的商品含税吗
  • 视频监控接入方式有哪几种
  • 认识数据库思维导图
  • 留抵税额是认证过的发票吗
  • 命令arp-a
  • xi:xtreg命令
  • ps命令显示进程状态
  • 销售不动产预征率是多少
  • 缴纳社保记账凭证附件
  • 固定资产融资租赁是什么意思
  • 帝国cms专题
  • sql server nullif
  • 非金融企业借款利息收入计入什么科目
  • 营业外收入汇算清缴时也得计入收入
  • 应交税费的明细账怎么登记
  • 个体工商户增值税申报操作流程
  • 实际成本法如何核算
  • 员工垫付款报销单
  • 公司因担保产生损失
  • 临时售楼处需要什么手续
  • 企业收到的财政性补贴要交企业所得税吗
  • 增值税专用发票的税率是多少啊
  • 员工成本价购买公司商品 税屋
  • 购买银行理财产品的几个必须知道
  • 待抵扣进项税额和待认证进项税额的区别
  • 企业工资薪金支出怎么确认
  • 取暖费用摊销吗
  • sql server如何远程登录
  • sqlserver1053怎么解决
  • mysql里面的事务
  • 如何安装ubuntu20.04
  • windows怎么将任务栏放大
  • win8怎么设置定时关机
  • js实现无缝轮播
  • Node.js中的核心模块包括哪些内容?
  • jquery动态添加的元素怎么添加事件
  • base adk
  • 酒类包装物押金的消费税处理规定
  • 发票被暂停了严重吗
  • 企业应交个人所得税分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设