InfoQ你应该了解的5种TypeScript设计模式( 五 )
box2.add( new Product("Samsung TV 20in", 300))
box2.add( new Product("Samsung TV 50in", 800))
box1.add(box2)
console.log("Total price: ", box1.getPrice)
在上面的示例中 , 我们可以将 Product 放入 Box 中 , 也可以将 Box 放入其他 Box 中 。 这是组合的经典示例 , 因为你要达到的目的是获得要交付产品的完整价格 , 因此你要在大 Box 中添加每个元素的价格(包括每个较小 Box 的价格) 。 这样 , 通常称为“component”的元素是 Product 类 , 也称为树内的“leaf”元素 。 这是因为该实体没有子级 。 Box 类本身是组合类 , 具有子列表 , 所有子类都实现相同的接口 。 最后一部分代码是因为你希望能够遍历所有子项并执行相同的方法(请记住 , 这里的子项可以是另一个较小的组合) 。
该示例的输出应为:
Adding a Bubble gum to the box
Adding a Samsung Note 20 to the box
Adding a Samsung TV 20in to the box
Adding a Samsung TV 50in to the box
Adding a A box with 2 products to the box
Total price: 2105.5
因此 , 在处理遵循同一接口的多个对象时 , 请考虑使用这种模式 。 它将复杂性隐藏在单个实体(组合本身)中 , 你会发现它有助于简化与小组的互动 。
设计模式是用于解决问题的完美工具 , 但你必须先了解它们 , 并针对自身面对的场景做一些调整才能让它们起作用 , 或者修改你的业务逻辑以配合模式 。 无论是哪种方式 , 都是一项不错的投资 。
你最喜欢哪种模式呢?你会经常在项目中使用它们吗?在评论中分享自己的看法吧!
参考阅读:
InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码 , 添加 InfoQ 小助手 , 回复关键字“进群”申请入群 。 大家可以和 InfoQ 读者一起畅所欲言 , 和编辑们零距离接触 , 超值的技术礼包等你领取 , 还有超值活动等你参加 , 快来加入我们吧!
【InfoQ你应该了解的5种TypeScript设计模式】点个在看少个 bug ??
- 吃货|快餐酸菜鱼加盟流程:了解完品牌后,最后还要经过培训
- 没蜡笔的小新|“整容脸”应该被鄙视吗?医生告诉你千篇一律的好看皮囊如何而来
- TopGame|FIFA足球世界 氪金游戏平民如何生存?最详白嫖套路了解下
- 刺刀|CSGO皮肤指南:刺刀应该怎么挑选?这款比穷人之水还便宜
- 王者荣耀|碎片商店免费换皮肤真香?大仙意外曝光5条规律,了解后赚大了!
- 【】詹眉又比肩OK组合纪录 沃帅:戴维斯才应该是DPOY
- 「浪姐」浪姐成团:30+的女性应该活成什么样子?她们给出了最好的答案
- 时尚广州|T恤的标语你了解过吗?揭秘衣服上那些奇怪的字句
- 央视新闻|毁草罚种草,网友觉得“还不够”,应该……
- 星城古龙|勒夫被喊下课,德国欧国联两连平,应该想念诺伊尔了吧?