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 读者一起畅所欲言 , 和编辑们零距离接触 , 超值的技术礼包等你领取 , 还有超值活动等你参加 , 快来加入我们吧!
点个在看少个 bug ??
推荐阅读
- 中年|全球饮茶风尚兴起 你真的了解袋泡茶吗?
- 京东|常说 AMD YES,却不知选哪款 A 卡好?或许应该看看这些
- 品谷农产品|专业的软件开发流程,应该是怎样的呢?
- 手机|当手机失窃信息被盗后我们应该怎么办?
- 科学,NASA|月球之旅应该带什么?NASA邀请人们分享心中答案
- 这样做|和平精英:萌新最易犯守楼误区,千万别卡楼梯口,你应该这样做
- 手机|手机选购先看需求,主力机或者备用机?这些价位也需要了解
- 达蒙砂轮|价格再次跌至谷底!切割片生产厂家究竟该如何定价?一、了解产品对于客户的价值二、细分目标市场生产差异化产品三、顺应市场变化,不断创
- 管径|管道天天见,管径搞不懂?一文了解De、DN、D、d、Φ区别
- 电视|还在为孩子看电视伤视力而烦恼?海信激光电视了解下
