
设计模式的艺术
文章平均质量分 75
设计模式
黄名富
他很懒,还没有添加介绍
展开
-
【再探】设计模式—备忘录模式与解释器模式
备忘录模式是用于保存对象在某个时刻的状态,来实现撤销操作。而解释器模式则是将文本按照定义的文法规则解析成对应的命令。原创 2024-06-03 00:37:39 · 649 阅读 · 0 评论 -
【再探】设计模式—访问者模式、策略模式及状态模式
访问者模式是用于访问复杂数据结构的元素,对不同的元素执行不同的操作。策略模式是对于具有多种实现的算法,在运行过程中可动态选择使用哪种具体的实现。状态模式是用于具有不同状态的对象,状态之间可以转换,且不同状态下对象的行为不同,客户端可以不必考虑其状态及转换,对所有的状态都可以执行同一的操作。原创 2024-05-31 23:00:14 · 1323 阅读 · 0 评论 -
【再探】设计模式—中介者模式、观察者模式及模板方法模式
中介者模式让多对多的复杂引用关系变成一对多,同时能通过中间类来封装多个类中的行为,观察者模式在目标状态更新时能自动通知给订阅者,模版方法模式则是控制方法的执行顺序,子类在不改变算法的结构基础上可以扩展功能实现。原创 2024-05-30 22:04:56 · 1040 阅读 · 0 评论 -
【再探】设计模式—职责链模式、命令模式及迭代器模式
行为型设计模式研究系统在运行时对象之间的交互,进一步明确对象的职责。有职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式及访问模式共11种。原创 2024-05-27 12:05:37 · 788 阅读 · 0 评论 -
【再探】设计模式—代理模式
增加一个代理对象,在客户端和目标对象之间起到中介作用,去掉客户不能看到的内容和服务,或者添加客户想要的额外服务。原创 2024-05-21 23:46:56 · 1059 阅读 · 0 评论 -
【再探】设计模式—桥接模式、组合模式及享元模式
结构型设计模式描述了对象与类之间的关系。适配器模式及装饰器模式主要用于接口适配及功能增强,而桥接模式模式则是为了减少类的数量,组合模式让部分与容器能被客户端统一对待处理,享元模式则是用于节约系统内存,提高系统性能。原创 2024-05-16 03:11:27 · 862 阅读 · 0 评论 -
【再探】设计模式—适配器、装饰及外观模式
结构型设计模式是用于设计对象和类之间关系的一组设计模式。一共有7种:适配器模式、装饰器模式、外观模式、桥接模式、组合模式、享元模式及代理模式。原创 2024-05-07 18:28:33 · 717 阅读 · 0 评论 -
【再探】设计模式—抽象工厂及建造者模式
抽象工厂模式和建造者模式都属于创建型模式。两者都能创建对应的对象,而创建者模式更侧重于创建复杂对象,将对象的创建过程封装起来,让客户端不需要知道对象的内部细节。原创 2024-04-30 20:24:36 · 1056 阅读 · 1 评论 -
【再探】设计模式— 工厂方法、单例及原型模式
创建型设计模式是处理对象创建的设计模式,主要特点是“将对象的创建与业务代码分离”。一共有五种:工厂方法模式、单例模式、原型模式、抽象工厂模式及建造者模式。原创 2024-04-29 21:40:23 · 964 阅读 · 0 评论 -
【再探】设计模式-设计原则
设计原则是在编写程序时引导程序员遵循的一些原则和准则。这些原则旨在提高代码的可读性、可维护性、可扩展性和可重用性。原创 2024-04-21 01:28:48 · 1142 阅读 · 0 评论 -
设计模式——建造者模式
建造者模式原创 2022-07-20 01:36:51 · 176 阅读 · 0 评论 -
设计模式——享元模式
在程序设计过程中,有时需要创建大量或相似的对象实例,创建这么多的对象将耗费更多的系统资源。需要将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象,从而降低内存的消耗。原创 2022-10-29 11:02:57 · 349 阅读 · 0 评论 -
设计模式——工厂模式
工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式原创 2022-07-18 22:56:57 · 246 阅读 · 0 评论 -
设计模式——适配器模式
应用场景:1、已存在的类,它的方法和需求不匹配的情况;2、适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案;原创 2022-09-19 00:40:00 · 753 阅读 · 0 评论 -
设计模式—外观模式
外观模式(Façade Pattern)是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。:为子系统中的一组接口提供一个一致的界面。图 用户订单管理商城系统,当用户创建订单的时候,支付系统处理支付,商品系统设置商品库存,配送系统处理发货,订单系统来生产订单数据。一个“下单”操作需要这几个系统同时工作,内部业务流程会比较复杂。原创 2022-12-01 00:02:58 · 244 阅读 · 0 评论 -
设计模式—装饰器模式
装饰器模式(Decorator Pattern),又叫作包装器模式(Wrapper Pattern),指在不改变原有对象结构的情况下,动态地给对象增加一些额外功能的职责。属于对象结构型模式。原创 2022-11-06 11:19:55 · 458 阅读 · 0 评论 -
设计模式——代理模式
1、业务系统的非功能性需求开发:比如日志、监控、统计、鉴权、限流等,将这些附件功能与业务功能解耦,放在代理类中统一处理;2、在RPC中应用;3、缓存代理,为一些开销大的运算结果提供暂时的存储,在下次运算时,如果传递进来的参数跟之前一致,则可以直接返回前面存储的运算结果;4、虚拟代理,把一些开销很大的对象,延迟到真正需要它的时候才去创建;原创 2022-10-17 00:21:12 · 169 阅读 · 0 评论 -
设计模式—访问者模式
本质是将数据结构和数据操作分离,通过定义一个访问者对象,实现对数据结构中各个元素的访问和处理,从而达到解耦和灵活性的目的。原创 2023-06-22 16:48:03 · 1666 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式又被称为发布-订阅模式,当目标对象(被观察者)的状态发生改变时,它的所有观察者都会收到通知。一个目标对象可以有多个观察者。原创 2022-08-07 13:15:48 · 168 阅读 · 0 评论 -
访问者模式-操作复杂对象结构
访问者模式提供一个作用于某对象结构中的各元素的操作表示。它包含访问者(打工人、学生及有钱人)和被访问元素(服装区、饮食区及休闲区)两个主要组成部分。这些被访问的元素通常具有不同的类型,且不同的访问者对它们进行不同的访问操作。原创 2023-11-06 23:35:00 · 244 阅读 · 0 评论 -
模版方法模式-定义算法的框架
定义一个操作中算法的框架,而将一些步骤延迟到子类中,子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。原创 2023-11-04 11:26:36 · 281 阅读 · 0 评论 -
算法的封装与切换——策略模式
1)一个系统有多个类,而区分它们的只是它们的直接行为;2)需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其他方式实现;3)对用户隐藏具体策略(算法)实现细节,彼此完全独立;原创 2022-09-22 00:54:34 · 274 阅读 · 0 评论 -
状态模式-对象状态及其转换
状态模式(State Pattern)允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的状态类。是一种对象行为型模式。原创 2023-10-26 23:57:55 · 885 阅读 · 0 评论 -
观察者模式-对象间的联动
观察者模式是使用频率最高的设计模式之一。定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并自动更新。原创 2023-10-20 00:53:21 · 342 阅读 · 0 评论 -
备忘录模式-撤销功能的实现
备忘录模式提供一种状态恢复机制。在不破坏封装的前提下,捕获对象内部状态并在该对象之外保存这个状态。可以在以后将对象恢复到原先保存的状态。原创 2023-10-16 22:29:36 · 579 阅读 · 0 评论 -
中介者模式-协调多个对象之间的交互
如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量的多对多联系,将导致系统非常复杂。它们之间通过彼此相互作用实现系统的行为。这将导致系统过度耦合。通过引人中介者对象,可以将系统的网状结构变成以中介者为中心的星形结构。在这个星形结构中,同事对象不再之间与另一个对象联系,它通过中介者对象与另一个对象发生相互作用。原创 2023-08-23 23:40:52 · 527 阅读 · 0 评论 -
迭代器模式-遍历聚合对象中的元素
简化了聚合类,聚合对象中不需要再自行提供数据遍历方法。将聚合对象的访问与内部数据的存储分离,使得访问聚合对象无须了解其内部实现细节。原创 2023-08-08 17:48:42 · 364 阅读 · 0 评论 -
解释器模式-自定义语言的实现
用于描述如何使用对象语言构成一个简单的语言解释器。定义一个语言的文法,并建立一个解释器来解释语言中的句子。这里的“语言”是指使用规定格式和语法的代码。原创 2023-08-04 17:40:46 · 632 阅读 · 0 评论 -
命令模式-请求发送者与接收者解耦
引入一个命令类,通过命令类来降低发送者和接收者的耦合度。将一个请求封装成一个命令对象,发送者只需指定一个命令对象,再通过命令对象来调用请求接收者的处理方法。原创 2023-08-01 17:36:03 · 690 阅读 · 0 评论 -
职责链模式-请求的链式处理
请求沿着一个链在传递,每一层都可以处理该请求。允许某个请求被一个具体处理者部分处理后再向下传递,或者一个具体处理者处理完某个请求后,后继处理者可以继续处理该请求,而且一个请求可以最终不被任何处理者对象所接收。避免将请求发送者与请求接收者耦合在一起,让多个对象都有机会接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。而且,要求一个请求必须被某个处理者所接收,不能出现某个请求未被任何一个处理者对象处理的情况。职责链模式本身不创建职责链,职责链由客户端创建。原创 2023-07-31 17:36:45 · 216 阅读 · 0 评论 -
代理模式-对象的间接访问
引入一个新的代理对象,在客户端对象和目标对象之间起到中介的作用,去掉客户不能看到的内容和服务或者增添客户想要的额外服务。原创 2023-07-28 18:54:49 · 201 阅读 · 0 评论 -
享元模式-提供统一实现对象的复用
通过共享技术实现相同或相似对象重用。做到共享的关键是区分“内部状态”和“外部状态”。内部状态:是存储在享元内部并且不会随着环境改变而改变的状态,内部状态可共享。比如围棋的颜色属性。外部状态:是随着环境改变而改变的、不可共享的状态。外部状态通常由客户端保存,并且在享元对象被创建之后,需要使用的时候,再传入享元对象的内部。一个外部状态与另一个外部状态之间是相互独立的。比如围棋的位置属性。原创 2023-07-27 19:58:15 · 327 阅读 · 0 评论 -
外观模式-提供统一入口
又称为门面模式,客户端与一个子系统的通信通过一个统一的外观角色进行,为子系统中的一组接口提供一个一致的入口。(子系统可以是一个类、一个功能模块、系统的一个组成部分或者一个完整系统。)外观角色将客户端与子系统的内部复杂性分隔开,使得客户端只需要与外观角色打交道,而不需要与子系统内部的很多对象打交道。原创 2023-07-26 17:40:41 · 392 阅读 · 0 评论 -
装饰模式-扩展系统功能
是一种替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。引入装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能。原创 2023-07-25 17:45:02 · 183 阅读 · 0 评论 -
组合模式-树形结构的处理
由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中,必须有区别地对待容器对象和叶子对象,而实际上大多数情况下希望一致地处理它们,因为区别对待这些对象将会使得程序变得复杂。组合模式为解决此类问题而诞生,可以让叶子对象和容器对象的使用具有一致性。组合多个对象形成树形结构以表示具有”部分—整体“关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,有被称为”部分—整体“模式(Part-Whole)。原创 2023-07-24 18:55:14 · 341 阅读 · 0 评论 -
桥接模式-处理多维度变化
如果软件系统种某个类存在两个或以上变化的维度,通过该模式可以将这些维度分离处理,使两者可以独立扩展,让系统更加符合单一职责原则。将独立的维度设计为不同的继承等级接口,并在抽象层建立一个抽象关联,该关联类似一条连接这些独立继承结构的桥。原创 2023-07-21 13:11:14 · 342 阅读 · 0 评论 -
适配器模式-不兼容结构的协调
适配器模式(Adapter Pattern),将一个接口转换成客户喜欢的另一个接口,使接口不兼容的那些类可以一起工作。这里的接口指广义的接口,它可以表示一个方法或者一组方法的集合。适配器又称为包装器。原创 2023-07-19 17:38:14 · 743 阅读 · 0 评论 -
建造者模式-复杂对象的组装与创建
将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无需关心复杂对象的内部组成部分与装配方式,只需要知道所需的建造者类型即可。创建者模式关注如何一步步地创建一个复杂对象,不同的具体建造者定义了不同的创建过程,且具体的建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。原创 2023-07-18 17:37:12 · 1020 阅读 · 0 评论 -
原型模式-克隆一个对象
如果源对象的成员变量是值类型,将复制一份给克隆对象,如果源对象的成员变量是引用类型,则将引用对象的地址复制一份给对象。将多个原型对象存储在一个集合中供客户端使用,它是一个专门复制克隆对象的工厂。当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建工厂,通过复制一个已有实例可以提高新实例的创建效率。ConcretePrototype:具体原型类,实现了克隆方法,在克隆方法中返回自己的一个克隆对象。Prototype: 抽象原型类,是声名克隆方法的接口,也可以是具体原型类的公共父类。原创 2023-07-17 18:27:48 · 761 阅读 · 0 评论 -
单例模式-系统只有一个实例
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。原创 2023-07-15 06:00:00 · 286 阅读 · 0 评论