
设计模式专题
文章平均质量分 86
程序员古德
公众号:程序员古德。《软考高级通关小册》系列作者,《软考之家 | https://www.ruankaozhijia.com》社区管理员,热衷技术钻研,乐于分享心得。
展开
-
程序员必知!装饰模式的实战应用与案例分析
装饰模式是一种结构型设计模式,允许在不改变对象基础上动态添加职责或行为。举个咖啡店中咖啡定制的实际例子,顾客可选不同配料装饰咖啡,每个配料视作装饰器,装饰模式优点有动态扩展、灵活性和避免类爆炸,但可能增加系统复杂性,需权衡使用。原创 2024-01-03 09:23:33 · 628 阅读 · 0 评论 -
程序员必知!迭代器模式的实战应用与案例分析
迭代器模式提供了遍历聚合对象中各元素的方法,通过它无需了解其底层结构,例如,在电商平台商品列表中统计销售额时,可通过迭代器简化遍历过程,加总每个商品销售额,此模式使代码更简洁、易维护,且适用于不同类型的聚合对象,实现轻松扩展。原创 2024-01-08 13:42:57 · 984 阅读 · 0 评论 -
程序员必知!责任链模式的实战应用与案例分析
责任链模式让多个对象依次处理请求,降低发送者和接收者的耦合度,以在线购物为例,用户提交订单需经多步验证,通过责任链模式,验证器按顺序处理请求,先用户身份,再支付方式,最后配送地址,任一验证失败即停止流程并反馈错误,责任链模式提升了代码的灵活性和可扩展性。原创 2024-01-06 21:40:44 · 567 阅读 · 0 评论 -
程序员必知!适配器模式的实战应用与案例分析
适配器模式是一种结构型设计模式,它允许不同接口的对象协同工作,它通过将一个类的接口转换成客户希望的另外一个接口,使得不兼容的类可以一起工作。适配器模式提高了类的复用性、系统的灵活性和可扩展性,并降低了系统间的耦合度,在实际应用中,例如电源适配器和数据转换器,以及编程中封装老旧接口或第三方库都体现了适配器模式的应用。原创 2023-12-29 10:14:55 · 1437 阅读 · 0 评论 -
【揭秘】单例模式DCL导致无法访问对象?
在Java中,单例模式是一种非常常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取该实例,但是,如果不正确地实现单例模式,就可能导致多个实例被创建,从而违反了单例模式的初衷。原创 2024-01-05 14:09:53 · 546 阅读 · 0 评论 -
程序员必知!命令模式的实战应用与案例分析
命令模式是一种行为设计模式,它将请求封装为对象以实现客户端参数化、请求排队、日志记录及撤销操作,旨在解耦调用者与操作实现者,以智能家居为例,用户通过界面发送命令对象,设备作为接收者执行相应操作,无需用户了解具体执行方式,从而增强了系统的灵活性和可扩展性。原创 2024-01-06 21:41:15 · 1092 阅读 · 0 评论 -
程序员必知!外观模式的实战应用与案例分析
外观模式是一种简化复杂子系统的软件设计模式,它通过提供一个统一的高层接口来隐藏子系统的内部细节,使得客户端调用更加便捷。就像餐厅的点餐系统,顾客无需了解厨房操作,只需通过系统点餐。这降低了系统耦合度,提高了可维护性。外观模式将复杂流程简化,优化了用户体验,同时方便系统扩展与修改。原创 2024-01-03 13:07:27 · 989 阅读 · 0 评论 -
程序员必知!代理模式的实战应用与案例分析
代理模式是在不改变原对象基础上,通过代理对象控制访问并添加额外操作,以销售代表和助理为例,助理作为代理对象,处理邮件、数据等琐碎工作,使销售代表能专注于与客户面对面交流推销,代理模式让原对象功能得以扩展,同时保持其对外接口的透明性。原创 2024-01-04 14:53:57 · 455 阅读 · 0 评论 -
程序员必知!享元模式的实战应用与案例分析
享元模式是一种减少相似对象创建和销毁的设计模式,通过将对象状态分为不变和可变部分,实现内存节省和性能提升。例如,在线游戏中大量玩家角色可共享相同的不变属性,而每人特有的可变属性则单独存储,享元模式使用享元类存储不变属性,非享元类存储可变属性,并通过享元工厂管理对象的复用和共享。原创 2024-01-04 11:23:59 · 796 阅读 · 0 评论 -
程序员必知!备忘录模式的实战应用与案例分析
备忘录模式允许在不破坏封装性下捕获并在外部保存对象状态,支持状态恢复,常用于撤销、历史记录等功能。例如在线文档编辑器的撤销操作,编辑器作为原发起人记录状态并提供保存与恢复方法,历史记录或撤销为管理者,保存备忘录对象,每个状态点即为备忘录,此模式为状态管理提供了灵活强大的机制。原创 2024-01-09 09:41:40 · 1311 阅读 · 0 评论 -
程序员必知!解释器模式的实战应用与案例分析
解释器模式是一种灵活处理复杂语言或表达式的设计模式,以智能家居系统为例,用户可用自定义语言编写控制脚本,如“室温高则开空调”,先定义这种语言的简单文法,再构建解释器将脚本转为系统可理解的指令,这样,用户无需了解底层细节,就能轻松控制家居设备,未来添加新功能时,只需扩展文法和解释器,不影响现有脚本。原创 2024-01-12 15:13:39 · 496 阅读 · 0 评论 -
程序员必知!状态模式的实战应用与案例分析
状态模式是一种行为型设计模式,通过在不同状态下对象行为的改变,简化了复杂的条件判断逻辑。以咖啡机为例,其多种状态如关机、待机、加热等,在不同状态下有不同行为,状态模式将每种状态及对应行为封装在各自类中,咖啡机类只需引用当前状态,需要时切换并调用相应行为方法,这降低了代码复杂度,提高了可读性和可维护性。原创 2024-01-11 12:45:00 · 520 阅读 · 0 评论 -
程序员必知!组合模式的实战应用与案例分析
组合模式是一种设计模式,允许将对象组合成树形结构并像单个对象一样使用它们,这种模式在处理类似公司组织结构这样的树形数据时非常有用,通过组合模式,我们可以将公司和部门视为同一类型的对象,从而以统一的方式处理发送给不同层级的请求或任务,叶节点是没有子节点的对象,而复合节点则包含子节点,客户端可以与这些节点进行交互,无需知道它们的具体类型。组合模式提供了表示层次结构的灵活方式,并统一了客户端的交互方式。原创 2024-01-12 15:11:46 · 447 阅读 · 0 评论 -
程序员必知!模板方法模式的实战应用与案例分析
模板方法模式让子类在不改变算法整体结构的前提下定制特定步骤,例如咖啡制作,不同咖啡遵循相同流程但有独特定制,如拿铁加牛奶,美式不加,这确保了制作流程的一致性,同时满足了不同咖啡的个性化需求,体现了模板方法模式的核心思想。原创 2024-01-11 07:45:00 · 988 阅读 · 0 评论 -
程序员必知!2024最新版设计模式大合集
2024最新版设计模式大合集!!!2024最新版设计模式大合集!!!2024最新版设计模式大合集!!!原创 2024-01-12 15:14:33 · 1428 阅读 · 0 评论 -
程序员必知!中介者模式的实战应用与案例分析
中介者模式通过引入中介类降低对象间耦合度,在电商平台中,卖家、买家、物流公司和支付平台原本需复杂交互,在引入“交易中介”类后,各角色只需与中介交互,由中介协调各方操作,从而简化了交互流程,降低了类间依赖,使系统更灵活可维护。原创 2024-01-08 13:43:58 · 1292 阅读 · 0 评论 -
程序员必知!策略模式的实战应用与案例分析
策略模式允许在运行时改变对象行为,创建代表不同策略的对象,上下文对象根据所选策略改变执行算法,在电商平台支付系统中,用户可选多种支付方式,每种方式有独特处理流程,策略模式将各支付方式作为策略封装,用户选择时执行相应逻辑,这遵循开闭原则,增强系统可扩展性和可维护性。原创 2024-01-10 07:45:00 · 1656 阅读 · 0 评论 -
程序员必知!观察者模式的实战应用与案例分析
观察者模式定义了一对多的依赖关系,让多个观察者同时监听一个主题对象,当主题状态改变时,所有观察者都会自动收到通知并更新,以新闻发布会为例,新闻机构发布消息时,所有关注的记者和订阅者都会收到通知并进行独立处理,这就是典型的观察者模式应用,该模式实现了松耦合,主题和观察者之间不需相互了解具体实现细节。原创 2024-01-09 13:25:37 · 1010 阅读 · 0 评论 -
程序员必知!访问者模式的实战应用与案例分析
访问者模式将数据结构与操作分离,允许在不改动已有类的情况下增添新操作,在电商平台案例中,商品类(如手机、电脑)可通过接受访问者对象来实现多种操作(如打折、加入购物车),避免了类臃肿,降低了耦合度,这种模式提升了代码的可扩展性与维护性,使添加新操作更为灵活。原创 2024-01-10 12:45:00 · 2146 阅读 · 0 评论 -
程序员必知!迪米特法则的实战应用与案例分析
迪米特法则,也称为最少知识原则(Least Knowledge Principle, LKP),是一个面向对象的设计原则,它强调一个对象应当对其他对象保持最少的了解。这个原则的核心思想是尽量降低类之间的耦合度,提高模块的相对独立性。原创 2023-12-22 09:37:57 · 161 阅读 · 0 评论 -
程序员必知!接口隔离原则的实战应用与案例分析
接口隔离原则(Interface Segregation Principle,ISP)是指客户端不应该依赖它不需要的接口,或者说一个类对另一个类的依赖应该建立在最小的接口上。原创 2023-12-19 10:07:33 · 170 阅读 · 0 评论 -
程序员必知!单例模式的实战应用与案例分析
单例模式是一种创建型设计模式,确保一个类只有一个实例并提供全局访问点。它用于解决资源管理、全局访问、状态保持和代码简化等问题。在Java中,通过私有化构造函数和提供静态方法实现。使用单例模式可节省系统资源、提高代码可维护性和一致性,避免不一致状态,并简化代码结构和逻辑。原创 2023-12-24 07:15:00 · 69 阅读 · 0 评论 -
程序员必知!开放封闭原则的实战应用与案例分析
开放封闭原则是面向对象设计中的重要原则之一,它要求软件实体(类、模块、函数等)应该对扩展开放,但对修改关闭。这意味着当需要添加新功能时,不应该修改现有的代码,而是应该通过扩展来实现。这可以通过使用接口、抽象类和多态等机制来实现,从而使系统更加灵活和可扩展。原创 2023-12-20 19:00:00 · 226 阅读 · 0 评论 -
程序员必知!生成器模式的实战应用与案例分析
生成器模式是一种创建型设计模式,它提供了一种构建对象的最佳方式,此模式允许用户通过一组预定义的步骤来构建复杂对象,而无需关心其内部的具体实现细节,生成器模式的核心思想是将一个复杂对象的构建过程与其表示过程分离,使得同样的构建过程可以创建不同的表示。原创 2023-12-23 18:35:19 · 132 阅读 · 0 评论 -
程序员必知!里式替换原则的实战应用与案例分析
里式替换原则(Liskov Substitution Principle, LSP)是面向对象设计的基本原则之一,由Barbara Liskov于1987年提出。这个原则的主要思想是:在软件中,如果一个类可以被另一个类所替换,并且不会影响程序的正确性,那么这两个类就遵循了里式替换原则。原创 2023-12-20 14:01:24 · 105 阅读 · 0 评论 -
程序员必知!原型模式的实战应用与案例分析
原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制(或克隆)一个已有对象的方式来创建新对象,而无需重新实例化。这种模式的核心思想是利用已有的对象作为原型,通过对其进行复制来生成新的对象。原创 2023-12-25 07:15:00 · 280 阅读 · 0 评论 -
程序员必知!依赖倒置原则的实战应用与案例分析
依赖倒置原则(Dependence Inversion Principle,DIP)是一种软件设计原则,它要求高层模块不依赖于低层模块,而是依赖于抽象。同时,抽象不依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。原创 2023-12-18 12:02:48 · 203 阅读 · 0 评论 -
程序员必知!单一职责原则的实战应用与案例分析
单一职责原则(Single Responsibility Principle,简称是SRP)是面向对象设计五个基本原则(SOLID)之一,它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原因,如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责,而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。原创 2023-12-15 13:30:03 · 186 阅读 · 0 评论