设计模式
文章平均质量分 64
易之阴阳
易之阴阳,量子纠缠,道之一体,缘起性空。问学ICT及AI与人的智慧。
展开
-
23种设计模式和多种模式的组合应用示例
23种设计模式包括简单工厂模式、策略模式、装饰模式、代理模式、工厂方法模式、原型模式、模板方法模式、外观模式、建造者模式、观察者模式、抽象工厂模式、状态模式、适配器模式、备忘录模式、组合模式、迭代器模式、单例模式、桥接模式、命令模式、职责链模式、中介者模式、享元模式、解释器模式、访问者模式。因此,在使用设计模式时应该保持谨慎和适度。工厂模式与抽象工厂模式:工厂模式是一种创建型模式,用于封装对象创建的细节,使得代码解耦。这两种模式可以组合使用,以实现单例对象的适配器功能,使得原本不兼容的接口可以协同工作。原创 2024-03-28 18:21:07 · 221 阅读 · 0 评论 -
面向对象设计原则与目标
面向对象设计(Object-Oriented Design, OOD)是一种编程范式,其核心思想是以对象为基础构造软件系统,通过封装、继承、多态等机制来组织代码,实现模块化、复用性、可维护性等目标。面向对象设计原则是指导开发者在设计阶段遵循的一系列最佳实践,而设计目标则是期望通过遵循这些原则达到的最终效果。下面分别介绍面向对象设计的原则与目标。原创 2024-04-08 08:30:00 · 451 阅读 · 0 评论 -
设计模式:工厂、策略、责任链模式
在审批流程系统中,各个级别的管理者(具体处理者)形成一个责任链,当员工提交一项请求时,请求从最低级别开始逐级向上审批,直至找到有权处理的处理者为止。: 在电商系统中,优惠策略可以采用策略模式,各种具体的优惠策略(如满减策略、打折策略、买赠策略)都是具体策略类,而购物车结算时根据不同的活动规则动态选择并应用相应的优惠策略。假设我们有一个计算折扣的系统,可以有不同的折扣策略。: 在支付系统的例子中,可以有一个支付处理器工厂,根据不同需求创建不同的支付处理器对象,如信用卡支付处理器、支付宝支付处理器等。原创 2024-03-31 11:52:31 · 415 阅读 · 0 评论 -
设计模式:简单工厂、原型,模板方法模式
咖啡制作流程,抽象类 Coffee 里定义了制作咖啡的基本步骤(磨豆、煮水、冲泡等),而具体的美式咖啡 AmericanCoffee 和拿铁咖啡 LatteCoffee 分别实现了加奶、加糖等特定步骤。: 创建不同种类动物的实例,如狗、猫,有一个 AnimalFactory 类,通过传入字符串类型来决定创建 Dog 或 Cat 对象。: 数据库连接对象,创建连接耗时且消耗资源,因此可以通过原型模式复制已建立好的连接对象,而非每次都新建连接。原创 2024-03-31 11:36:39 · 360 阅读 · 0 评论 -
设计模式:解释器、访问者、建造者模式
建造者模式是一种创建型设计模式,主要用于分步骤创建复杂对象,隐藏对象的创建细节,使得同样的创建过程可以创建不同的表示。它主要是为了解决对象的创建过程复杂性问题,将对象的构建和表示分离,从而使得客户端不需要知道具体构建细节就可以构建复杂对象。访问者模式通过分离数据结构和作用于数据结构上的操作来达到这一目的,数据结构对象拥有接受访问者的通用接口,而访问者则持有对元素执行操作的方法。: 构建复杂对象如计算机配置,不同的具体建造者可以按照不同的配置规格(如CPU、内存、硬盘等)创建出不同的计算机实例。原创 2024-03-31 11:28:11 · 301 阅读 · 0 评论 -
设计模式:抽象工厂、备忘录、组合模式
目的: 抽象工厂模式是一种创建型设计模式,它提供一个接口,用于创建相关或依赖对象家族的一个或多个系列的产品,而无需指定具体产品类。这样可以使客户端独立于具体产品的创建过程,同时使得易于更换整体产品族。结构(抽象工厂):声明创建一组相关或相互依赖对象的接口,让客户端可以使用这些对象而无需指定它们的具体类型。(具体工厂):实现抽象工厂接口,生成一组具体产品对象。Product(抽象产品):定义产品的接口,它是所有具体产品必须实现的接口。(具体产品):实现了抽象产品接口,是实际生产出来的产品。示例场景。原创 2024-03-31 11:20:17 · 284 阅读 · 0 评论 -
设计模式:观察者、享元、状态模式
对象看起来似乎改变了它的类,但实际上它是根据当前状态委托给相应状态对象来处理请求。当插入银行卡后,ATM机会处于不同的状态,每种状态下响应的用户操作各不相同。: 享元模式是一种结构型设计模式,用于减少应用程序中创建的相似对象的数量,以节约内存。: 在图形渲染应用中,大量的像素点具有相同的颜色,而不是为每一个像素点都创建一个新的颜色对象,而是通过享元模式共享同一颜色对象。: 观察者模式是一种行为设计模式,它允许你定义一种订阅机制,当对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。原创 2024-03-31 08:12:59 · 248 阅读 · 0 评论 -
设计模式:迭代器、命令、外观模式
设计模式是面向对象编程中经过验证的最佳实践,用来解决常见的设计问题和重用设计方案。原创 2024-03-31 08:01:06 · 361 阅读 · 0 评论 -
设计模式:代理模式、中介者模式、桥接模式
代理模式为其他对象提供一个代理以控制对真实对象的访问。代理类与真实主题具有相同的接口,因此在客户端看来两者是可以互换的。代理可以用于增强控制、增加额外功能(如日志、权限检查等)而不影响原有对象。中介者模式定义了一个中介对象来封装一系列对象之间的交互。中介使得各个对象不需要显式地相互引用,从而降低了耦合度。桥接模式将抽象部分与实现部分分离,使它们可以独立变化。它使用组合关系代替继承关系来解耦。原创 2024-03-30 08:24:41 · 244 阅读 · 0 评论 -
设计模式:工厂、单例、装饰器模式
用于封装对象的创建过程,允许客户端通过调用工厂方法得到所需的对象,而不必关心具体的创建逻辑。:动态地给一个对象添加一些额外的职责(behavior)。:确保一个类只有一个实例,并提供全局访问点。原创 2024-03-30 08:01:35 · 143 阅读 · 0 评论 -
设计模式组合示例:工厂、策略、责任链模式
下面这个例子中,工厂方法模式用于根据需求动态创建支付处理器,策略模式用于切换支付策略,责任链模式则负责处理支付成功后的多个后续操作。这样,整个系统具有很好的扩展性和模块化程度,可以根据不同的业务场景灵活地增删或更换支付方式、支付策略以及支付成功后的处理逻辑。:一个在线购物系统需要处理订单支付流程,包括用户选择支付方式、处理支付逻辑、通知商家和更新库存。:用于创建不同类型的支付处理器对象,比如支付宝支付处理器、微信支付处理器等。:用于处理各种支付策略,比如全额支付、分期支付等。原创 2024-03-30 07:53:09 · 232 阅读 · 0 评论 -
Spring mvc中的设计模式有哪些
Spring框架中的AOP(面向切面编程)功能就是基于代理模式实现的,它允许开发者在不修改现有代码的情况下添加额外的功能(如事务管理、日志记录等)。在Spring MVC中,通过依赖注入和接口编程,可以实现高层模块与低层模块之间的解耦,从而提高代码的可测试性和可维护性。在Spring MVC中,通过使用接口和抽象类来定义通用行为,可以确保子类遵循父类的约定,从而实现代码的替换性。在Spring MVC中,通过定义小而具体的接口来减少类之间的耦合度,从而提高代码的可维护性和可扩展性。例如,Spring的。原创 2024-03-28 18:23:55 · 554 阅读 · 0 评论 -
JDK中的设计模式体现示例
【代码】JDK中的设计模式。原创 2024-03-29 09:32:53 · 343 阅读 · 0 评论 -
docker中的设计模式体现
在Docker中,不同的容器可以运行不同的应用程序或服务,每个容器都采用了不同的策略来执行其任务。例如,Docker Swarm集群中的manager节点,通常要求只有一个活动的leader节点,这类似于单例模式,确保集群中领导角色的唯一性。这种单一职责原则类似于单例模式,尽管单例模式通常指的是类的设计模式,而在这里我们指的是容器实例的行为。当你在Dockerfile中添加新的RUN指令或COPY文件时,实际上是创建了一个新的镜像层,这个新的镜像层在原有基础上增加了新的特性,而不会改变原有层的内容。原创 2024-03-29 10:01:27 · 938 阅读 · 0 评论 -
了解k8s中体现的一些设计模式
这些设计模式在Kubernetes中帮助开发者构建高效、可靠和易于管理的容器化应用。它们不仅提供了解决特定问题的模板,还促进了容器化生态系统的协作和扩展性。从高度上了解这些对使用k8s会更能清晰明了。在Kubernetes(k8s)中,也体现了多种设计模式,这些设计模式有助于构建可扩展、可维护、灵活和高效的容器化应用,了解一些理念也有助于使用。原创 2024-03-29 09:41:53 · 138 阅读 · 0 评论 -
Linux系统中的一些设计模式体现
需要注意的是,这些设计模式并不是孤立的,它们经常以组合的方式在Linux系统设计中得到应用。在Linux系统中,策略模式可能被用于实现灵活的配置和定制功能,如文件系统、网络协议等。在Linux系统中,工厂模式可能被用于管理各种资源或对象的创建,如设备驱动、网络套接字等。:用于建立事件驱动的系统,将事件和响应分离,降低系统的耦合性。在Linux系统中,观察者模式可能被用于实现各种事件通知机制,如内核事件、硬件中断等。在Linux系统设计中,设计模式的应用有助于提升系统的灵活性和可扩展性,以及软件的可维护性。原创 2024-03-29 09:46:33 · 205 阅读 · 0 评论