位置: 编程技术 - 正文

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

编辑:rootadmin

推荐整理分享设计模式中的组合模式在JavaScript程序构建中的使用(设计模式三种),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:设计模式的组成元素,设计模式三种,设计模式中的组织是什么,设计模式中的组织结构,设计模式中的组织是什么,设计模式中的组合模式,设计模式中的组织是什么,设计模式中的组合模式,内容如对您有帮助,希望把文章链接给更多的朋友!

定义

组合,顾名思义是指用包含多个部件的对象创建单一实体。 这个单一实体将用作所有这些部件的访问点,虽然这大大简化了操作,但也可能具有相当的欺骗性,因为没有哪种隐性方式明确表明该组合包含多少部件。组合模式的目标是解耦客户程序与复杂元素内部架构,使得客户程序对待所有子元素都一视同仁。

每个子节点都可以使复杂的存在,对于父节点来说,不需要知道子节点的复杂性或者实现子节点的复杂性,只需要关注子节点的特定方法,便可以使用子节点。简化了父和子之间的关系。

对于子节点来说也是一样的,过多的接口暴露有时候也是一种滥用,同时也减少了对外部的依赖。

示例我们最好使用例证解说组合。 在下图中,您可以看到两种不同类型的对象: 容器和库是组合,图像是叶片。 组合可承载子项,但一般不会实施更多行为。 叶片包含绝大多数行为,但不能承载子项,至少在传统的组合示例中不可以。

此示例创建图片库,将其作为组合模式示例。 只有三个层次: 专辑、库和图像。 专辑和库将作为组合,图像是叶片,如上面那张图所示。这是一种比组合本身需求更加明确的结构,但对于本示例而言,将这些层次仅限制为组合或叶片很有意义。 标准组合不会限制哪些结构层次可以具有叶片,也不会限制叶片数量。

要开始操作,应首先创建用于专辑和库的 GalleryComposite“类”。 请注意,我正在使用 jQuery 执行 DOM 操作以简化过程。

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

这个位置有点棘手,能否允许我再更多的解释一下? 我们同时使用 add, remove, 和getChild getChild 方法构建这一组合。 本示例不会实际使用 remove 和 getChild,但它们对于创建动态组合非常有用。 hide, show, 和getElement 方法则用来操纵 DOM。 该组合旨在作为库的 表示在页面上向用户展示。 该组合可通过 hide 和 show控制这些库元素。 如果在专辑上调用 hide,则整个专辑将消失,或者您也可以只在单一图像上调用它,这样只有该图像会消失。

现在,创建一个 GalleryImage类。 请注意,它使用的方法与 GalleryComposite完全相同。 换句话说,它们实现同一接口,不同的是该图像是叶片,因此不会实际对子项相关方法执行任何操作,就像不具有任何子项一样。 必须使用同一接口运行该组合,因为组合元素不知道自身添加的是另一个组合元素还是叶片,因此如果尝试在其子项上调用这些方法,则需要运行完全正常,没有任何错误。

鉴于您已经构建了对象原型,您现已能够进行使用。 从下面您可以看到实际构建图像库的代码。

组合模式之利:简单的操作也能产生复杂的结果,只需对最顶层的对象执行操作,让每一个子对象自己传递这个操作即可。这对于那些再三执行的操作尤其有用。

在组合模式中,各个对象之间的耦合非常松散。只要它们实现了同样的接口那么改变它们的位置或互换它们只是举手之劳。着促进了代码的重用,也有利于代码重构。

每当对顶层组合对象执行一个操作时,实际上是在对整个结构进行深度优先的搜索以查找节点,而创建组合对象的程序员对这些细节一无所知。在这个层次体系中添加、删除和查找节点都非常容易。

组合模式之弊:组合对象的易用性可能掩盖了它所支持的每一种操作的代价。由于组合对象调用的任何操作都会被传递到它的所有子对象如果这个层次体系很大的话,系统的性能将会受到影响。组合模式的正常运作需要用到某种形式的接口。

组合对象和节点类被用作HTML元素的包装工具时,组合对象必须遵守HTML的使用规则。例如,表格就很难转化为一个组合对象。

接口检查越严格,组合对象类也就越可靠。

JavaScript设计模式开发中组合模式的使用教程 我们平时开发过程中,一定会遇到这种情况:同时处理简单对象和由简单对象组成的复杂对象,这些简单对象和复杂对象会组合成树形结构,在客户端

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

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

标签: 设计模式三种

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

上一篇:详解JavaScript设计模式开发中的桥接模式使用(javascript怎么设置)

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

  • 工资走账是什么意思
  • 电子商业汇票怎么兑现
  • 打印的电子发票需要盖章么
  • 应交税费进项税额属于什么科目借贷方向
  • 个税申报赡养老人可以填公婆吗
  • 薪金性支出包括什么
  • 受托代销商品和受托代销商品款怎么列示
  • 工商银行特色贷款
  • 注册公司认缴资本不缴可以吗
  • 住房公积金在个税中如何扣除
  • 帮别人开票收税点怎么做账
  • 零税率的发票
  • 承租方收到融资租赁款会计处理
  • 科研项目间接费用会计分录
  • 稿酬所得是否需要按照累计预扣税率
  • 个人给公司垫付款起诉状
  • 从公账转账私人转账
  • 个人非货币性资产出资 个人所得税
  • 那些发票可以报
  • 应交税费算什么费用
  • 收到的税费返还减少的原因
  • 赎回公司发行的债券怎么做账?
  • 员工受伤报销
  • 企业出售二手车增值税如何缴纳
  • 劳务公司代发劳务费合法吗
  • 测量仪器进工程成本的什么科目?
  • 税控设备 抵减
  • 腾讯电脑管家开机加速在哪里
  • 商标注册费用
  • 支付保证金需要附件
  • 销售费用的类型
  • php 正则表达式
  • 会计分录的表现形式有
  • vue如何预加载图片
  • 什么是实际成本计价
  • 杜拉通河谷中的Nuestra Señora de la Hoz老修道院,西班牙塞哥维亚 (© Arco Images GmbH/Alamy)
  • 美轮美奂的对象是什么
  • 超级本轻薄本
  • centos安装epel
  • 已付款收货未收到发票怎么做账
  • 补缴教育费附加免征滞纳金
  • 资产减值损失账户核算内容
  • 人力资源公司的税率是多少
  • python中lambda用法
  • 银行存钱转账
  • 债务豁免会计核算
  • 将一个表中的字段更新到另一个表
  • 应付职工薪酬在利润表哪里体现
  • 信用证保证金账户属于什么账户性质
  • 固定资产大修理和更新改造的区别
  • 路桥费税率是几个点
  • 零退税率可以做免税吗
  • 计提商业承兑汇票会计分录怎么写
  • 应收账款的财务指标有哪些
  • 付给外包公司的垃圾处理费会计分录
  • 关于读书的名言名句
  • 在Linux系统中安装虚拟window
  • Freebsd7.0 Apache2.2+MySQL5+PHP5安装和配置方法
  • centos5.8服务器
  • 如何查看电脑型号及配置
  • ubuntu下mysql的常用命令
  • windows7壁纸怎么恢复
  • windows 8
  • 歌词特效是怎么弄的
  • win10多任务视图不排序怎么设置
  • cocos2dx4.0入门
  • python函数菜鸟教程
  • input输入@弹出框
  • nodejs实现文件下载
  • 你所不知道的童话动画版免费观看第二季
  • numpy入门
  • android中常用的adapter不包括
  • jquery怎么实现分页功能
  • 国家税务总局网站官网浙江
  • 缴款单号怎么交学费
  • 河南网上税务局app下载
  • 廉政谈话什么是廉政?
  • 输入税控盘密码是填证书口令吗
  • 医保未参保怎么参保 支付宝
  • 办理养殖照税务登记证
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设