首页 > 其他分享 >学习高校课程-软件设计模式-组合模式、装饰器模式和外观模式(lec7)

学习高校课程-软件设计模式-组合模式、装饰器模式和外观模式(lec7)

时间:2024-10-31 13:45:06浏览次数:5  
标签:box smaller 盒子 软件设计 模式 Boxes lec7 Products

原文链接

Composite: Problem

Using the Composite pattern makes sense only when the core model of your app can be represented as a tree.
仅当应用程序的核心模型可以表示为树时,使用复合模式才有意义。

For example, imagine that you have two types of objects: Products and Boxes. A Box can contain several Products as well as a number of smaller Boxes. These little Boxes can also hold some Products or even smaller Boxes, and so on.
例如,假设您有两种类型的对象: Products和Boxes 。一个Box可以包含多个Products以及许多较小的Boxes 。这些小Boxes还可以容纳一些Products甚至更小的Boxes等等。

Composite: Solution and Structure

How would this method work? For a product, it’d simply return the product’s price. For a box, it’d go over each item the box contains, ask its price and then return a total for this box. If one of these items were a smaller box, that box would also start going over its contents and so on, until the prices of all inner components were calculated. A box could even add some extra cost to the final price, such as packaging cost.
这个方法如何运作?对于产品,它只会返回产品的价格。对于一个盒子,它会检查盒子中包含的每件物品,询问其价格,然后返回该盒子的总计。如果其中一个物品是一个较小的盒子,该盒子也会开始检查其内容,依此类推,直到计算出所有内部组件的价格。盒子甚至可能会在最终价格上增加一些额外成本,例如包装成本。

Decorator: Problem

Initial version

New requirement

Decorator: Solution

Facade:Problem and Solution

Imagine that you must make your code work with a broad set of objects that belong to a sophisticated library or framework. Ordinarily, you’d need to initialize all of those objects, keep track of dependencies, execute methods in the correct order, and so on.As a result, the business logic of your classes would become tightly coupled to the implementation details of 3rd-party classes, making it hard to comprehend and maintain.
想象一下,您必须使您的代码能够与属于复杂库或框架的大量对象一起工作。通常,您需要初始化所有这些对象、跟踪依赖关系、以正确的顺序执行方法等等。因此,类的业务逻辑将与第 3 方类的实现细节紧密耦合,从而难以理解和维护。

  • Facade: a simple interface to a complex subsystem which contains lots of moving parts
  • Providing limited functionality, only features that clients really care about
  • For example: an app that uploads short funny videos may use a professional video conversion library, but all it really needs is a class with encode (filename,format)
  • This class is a facade

– Facade:复杂子系统的简单界面,其中包含许多移动部件
– 提供有限的功能,仅提供客户真正关心的功能
– 例如:上传有趣短视频的应用程序可能会使用专业的视频转换库,但所有这些真正需要的是一个带有encode(filename, format)的类——这个类是一个门面

标签:box,smaller,盒子,软件设计,模式,Boxes,lec7,Products
From: https://www.cnblogs.com/Mephostopheles/p/18516717

相关文章

  • 【云原生】云原生后端:最佳实践与设计模式
    这里写目录标题引言一、云原生的核心概念1.1云原生定义1.2关键特性1.3云原生vs.传统架构二、云原生最佳实践2.1微服务架构2.2采用容器化2.3持续集成与持续交付(CI/CD)2.4API驱动设计2.5服务发现与负载均衡三、常见设计模式3.1服务拆分模式3.2事件驱动架构3.......
  • 456. 132 模式 Golang实现
    题目描述:给你一个整数数组nums,数组中共有n个整数。132模式的子序列由三个整数nums[i]、nums[j]和nums[k]组成,并同时满足:i<j<k和nums[i]<nums[k]<nums[j]。如果nums中存在132模式的子序列,返回true;否则,返回false。示例3:输入:nums=[-1,3,2,0]......
  • 鸿蒙高安全性输入法的实现:基础模式与完整体验模式下的输入法功能适配
    本文旨在深入探讨高安全性输入法在基础模式与完整体验模式下的功能适配技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在当今数字化环境中,用户数据安......
  • 07.适配器模式设计思想
    07.适配器模式设计思想目录介绍01.适配器模式基础1.1适配器模式由来1.2适配器模式定义1.3适配器模式场景1.4适配器模式思考02.适配器模式实现2.1罗列一个场景2.2用例子理解适配器2.3适配器基本实现2.4如何选择适配器03.适配器模式分析3.1类适配器案......
  • 【设计模式】异步阻塞、异步回调模式
    1 前言为什么要看这个异步回调呢?是因为我上节在看RocektMQ发送消息的时候,它支持同步、异步、一次性的模式,后两者不会阻塞当前线程,但是看这两者都没用到线程池,那它是如何处理的呢?我们看下三者最后的落点,都是在 NettyRemotingAbstract这个类里://NettyRemotingAbstract#inv......
  • 【系统设计】高效的分布式系统:使用 Spring Boot 和 Kafka 实现 Saga 模式
    在现代分布式系统中,管理跨多个服务的长事务至关重要。传统的分布式事务解决方案往往面临性能瓶颈和复杂性问题,而Saga模式作为一种灵活高效的解决方案,逐渐受到开发者的青睐。本文将探讨如何利用SpringBoot和Kafka实现Saga模式,并详细介绍事务补偿机制,帮助你构建稳定......
  • 不使用docker-compose不使用zookeeper启动ApacheKafka3.8.0单机运行KRAFT模式
    dockerrun-d-v/kafka_data:/opt/kafka-logs-eKAFKA_ENABLE_KRAFT=yes-eKAFKA_PROCESS_ROLES=broker,controller-eKAFKANODEID=1-eKAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093-eKAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.1......
  • 详解:模板设计模式
            模板设计模式(TemplatePattern)是一种行为设计模式,在软件设计中有着广泛的应用,旨在提高代码的可维护性和可复用性。一、定义与特点定义:模板设计模式定义了一个算法的骨架,将某些步骤推迟到子类中实现。这样,可以在不改变算法结构的情况下,重新定义算法中的某些......
  • 二十三种设计模式之命令模式
    目录1.什么是命令模式?2.命令模式的组成3.命令模式的优点4.命令模式的缺点5.使用场景6.实践中的应用7.拓展:命令模式与现代框架8.结语        在软件工程领域,设计模式是解决特定问题的成熟模板。今天,我想和大家分享一种非常实用的行为设计模式——命令......
  • 前端开发设计模式: 单例模式
    什么是单例模式?(SingletonPattern) 单例模式,也叫单体模式,是一种创建型设计模式,是全局(或某一作用域范围)唯一实例,大家共享、复用一个实例对象。——最基础、最常见的设计模式1、保证对象实例只创建一次,后续的引用都是同一个实例对象2、保证一个类只有一个实例,并提供一个访问它......