![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 70
Miaow.Y.Hu
欲买桂花同载酒,终不似,少年游。
展开
-
二十三种设计模式第二十四篇--访问者模式(完结撒花)
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。原创 2023-08-01 20:30:38 · 519 阅读 · 0 评论 -
二十三种设计模式第二十三篇--状态模式
对这种具有状态的对象变成,传统的解决方案是,将这些所有可能发生情况全部考虑到,然后使用if-else或者switch-case语句来做状态判断,再进行不同情况的处理。状态模式,是一种行为模式,在软件开发过程中,对象按照不同的情况做出不同的行为,我们把这样的对象称为具有状态的对象,而把影响对象行为的一个或者多个动态变化的属性称为状态。,对于可以切换状态的状态模式,增加新的状态类需要修改那些负责状态转换的源代码,否则无法切换到新增状态,而且修改某个状态类的行为也需修改对应类的源代码。原创 2023-08-01 20:11:53 · 510 阅读 · 0 评论 -
二十三种设计模式第二十二篇--中介者模式
它提供了一种集中式的方式来管理复杂对象之间的通信和交互。中介者模式通过引入一个中介者对象,将对象之间的通信转化为与中介者的通信,从而减少对象间的直接耦合。原创 2023-08-01 19:44:27 · 556 阅读 · 0 评论 -
二十三种设计模式第二十一篇--解释器模式
解释器模式(Interpreter Pattern)==是一种行为设计模式,它用于定义一种语言的语法结构和解释器,使得可以解释并执行特定的语法规则。该模式可以将复杂的语言表达式分解为更小的语法单元,并定义其解释过程。==原创 2023-08-01 19:33:05 · 495 阅读 · 0 评论 -
二十三种设计模式第二十篇--备忘录模式
备忘录模式,备忘录模式属于行为型模式。它允许在不破坏封装的情况下捕获和恢复对象的内部状态。==保存一个对象的某个状态,以便在适当的时候恢复对象,该模式通过创建一个备忘录对象来保存原始对象的状态,并将其存储在一个负责管理备忘录的负责人对象中。==原创 2023-07-31 19:26:22 · 580 阅读 · 0 评论 -
二十三种设计模式第十九篇--命令模式
命令模式是一种行为设计模式,==它将请求封装成一个独立的对象,从而允许您以参数化的方式将客户端代码与具体实现解耦==。在命令模式中,==命令对象充当调用者和接收者之间的中介==。这使您能够根据需要将请求排队、记录请求日志、撤销操作等。命令模式的核心组成部分包括:> 命令接口(Command Interface):定义了执行操作的方法。 具体命令(Concrete> Command):实现了命令接口,并将具体的请求与实际的接收者相关联。> 调用者(Invoker):接收客户端的请求,并将其转发给具原创 2023-07-31 18:51:03 · 737 阅读 · 0 评论 -
二十三种设计模式第十八篇--责任链模式
责任链模式是一种行为型设计模式,==它允许你将请求沿着处理者链传递,直到有一个处理者能够处理该请求为止。责任链模式将请求发送者和请求处理者解耦,从而使得多个处理者都有机会处理同一个请求。==原创 2023-07-25 20:22:01 · 454 阅读 · 0 评论 -
二十三种设计模式第十七篇--迭代子模式
总之,迭代子模式适用于任何需要遍历集合对象的场景,尤其是在需要统一遍历方式、隐藏集合对象内部结构或提供多种遍历方式的情况下。它能够提高代码的可读性、可维护性和可扩展性,并且能够使不同类型的集合对象之间的遍历操作变得更加一致和简单。原创 2023-07-25 20:07:15 · 419 阅读 · 0 评论 -
二十三种设计模式第十一篇--桥接模式
桥接模式是一种结构型设计模式,它将抽象部分和实现部分分离,使它们可以独立地变化。桥接模式通过将抽象部分和实现部分分离,可以使它们可以独立地进行扩展和变化,而不会相互影响。在桥接模式中,抽象部分和实现部分分别由抽象类和实现类来表示。抽象类定义了抽象部分的接口,而实现类则实现了抽象部分的接口。抽象类中包含一个指向实现类的引用,通过这个引用,抽象类可以调用实现类中的方法。桥接模式的核心思想是将抽象部分和实现部分分离,使它们可以独立地变化。这样一来,当需要新增一种抽象部分或实现部分时,只需要新增对应的抽象类原创 2023-06-25 10:58:00 · 577 阅读 · 0 评论 -
二十三种设计模式第十二篇--组合模式
组合模式是一种结构型设计模式,它允许将对象组合成树形结构来表示整体-部分的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。在组合模式中,有两种类型的对象:叶子对象和组合对象。叶子对象表示树结构中的叶子节点,它没有子节点。组合对象表示树结构中的非叶子节点,它可以包含其他的组合对象和叶子对象。原创 2023-06-25 11:22:54 · 500 阅读 · 0 评论 -
二十三种设计模式第十六篇--观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。 发布/订阅模式比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。总结起来,观察者模式是一种实现对象间松耦合通信的设计模式,它通过建立主题和观察者之间的依赖关系,实现了当主题状态变化时自动通知观察者的机制。观察者模式具有很高的灵活性和可扩展性,在各种应用场景中都有着重要的作用。原创 2023-07-06 18:56:41 · 654 阅读 · 0 评论 -
二十三种设计模式第十五篇--模版方法模式
模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,而将一些步骤延迟到子类中实现。通过使用这种模式,我们可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。原创 2023-07-06 17:53:18 · 459 阅读 · 0 评论 -
二十三种设计模式第十四篇--策略模式
在软件开发中,我们经常遇到需要根据不同的情况选择不同算法或行为的情况。传统的做法是使用大量的条件语句来实现这种逻辑,但这样的实现方式往往难以维护和扩展。策略模式(Strategy Pattern)提供了一种优雅的解决方案,可以让我们灵活地处理多种算法和行为,同时提高代码的可维护性和可扩展性。原创 2023-07-06 17:43:02 · 808 阅读 · 0 评论 -
二十三种设计模式第十三篇--享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于****结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。原创 2023-07-06 17:30:48 · 509 阅读 · 0 评论 -
二十三种设计模式第十篇--外观模式
软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”,所以有必要为多个子系统提供一个统一的接口,从而降低系统的耦合度,这就是外观模式的目标。 外观(Facade)模式/门面模式 的结构比较简单,主要是定义了一个高层接口。它包含了对各个子系统的引用,客户端可以通过它访问各个子系统的功能。现在来分析其基本结构和实现方法。原创 2023-05-24 10:37:55 · 431 阅读 · 0 评论 -
二十三种设计模式第九篇--代理模式
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说: ***要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问), 直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个原创 2023-05-24 10:28:28 · 565 阅读 · 0 评论 -
二十三种设计模式第八篇--装饰器模式
装饰器模式是一种==结构型设计模式==,它允许在不改变对象原有结构的情况下,动态地添加新的行为或功能。装饰器模式通过将对象包装在一个装饰器对象中,来实现对对象的功能扩展。装饰器对象与被装饰对象具有相同的接口,因此可以无缝地替换被装饰对象。装饰器模式的==优点在于它可以动态地添加或删除对象的功能,而不需要修改对象的代码==。此外,装饰器模式还可以==避免使用继承来扩展对象的功能,从而避免了继承带来的代码复杂性和耦合性==。装饰器模式在实际应用中广泛使用,例如在Java中的IO流和Swing组件中都使用了装饰器原创 2023-05-22 09:52:00 · 296 阅读 · 0 评论 -
二十三种设计模式第七篇--适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于 ***结构型模式***,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。我们生活中的**读卡器**是作为**内存卡和笔记本之间**的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。原创 2023-05-22 09:38:58 · 315 阅读 · 0 评论 -
二十三种设计模式简述
设计模式是一种被广泛应用于软件开发中的解决问题的方法。它们是经过多年实践和总结的最佳实践,可以帮助开发人员更加高效地解决各种问题。以下是二十三种设计模式以及它们各自的作用。原创 2023-05-15 16:00:02 · 518 阅读 · 0 评论 -
二十三种设计模式第六篇--建造者模式(也叫生成器)
建造者模式(Builder Pattern)使用多个简单的对象一步一步(顺序构建)构建成一个 复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化原创 2023-05-10 09:34:48 · 424 阅读 · 0 评论 -
二十三种设计模式第五篇--原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。用原型实例来指定创建对的种类,并且通过拷贝这些原型来创建新的对象。原创 2023-05-09 14:09:23 · 451 阅读 · 0 评论 -
二十三种设计模式第四篇--单例模式
今天,我们来学习单例模式,说到单例模式,我相信没有哪个初学者不认识他,他在我们项目中也用的贼多。并且单例模式,是java中最简单的一种设计模式,单例模式,也是创建型模式的一种。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。原创 2023-05-08 14:18:03 · 472 阅读 · 0 评论 -
二十三种设计模式第三篇--抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于,它提供了一种创建对象的最佳方式。在抽象工厂模式中,,每个生成的工厂都能按照工厂模式提供对象。原创 2023-05-06 10:42:41 · 296 阅读 · 0 评论 -
二十三种设计模式第二篇--工厂模式
工厂模式,算是我们接触的最多的设计模式的一种吧。那么,到底什么是工厂模式呢?工厂方法(Factory Method)模式,是对简单工厂模式进行了抽象、推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了缺点。通过设计一个抽象的Factory类或接口,这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作,推延到其子类去完成。其目的是定义一个用户创建对象的接口,让子类决定实例化哪一个类,工厂方法模式,使一个类的实例化,延迟到其子类。原创 2023-04-28 17:32:37 · 887 阅读 · 0 评论 -
二十三种设计模式第一篇-设计模式的原则和分类
怎么说,其实我挺讨厌设计模式的,但是不得不说,这东西解决问题确实有一手,并且设计模式确实规范了我们在开发中的代码,并且我们可以使用这二十三种设计模式解决我们碰到的业务问题,并且我们学的框架里边多多少少使用了设计模式。我作为刚刚进入门槛的小白,还尚未是一个合格的程序员,老实说,我真的讨厌这个设计模式,但是软件设计师考试,找工作面试,看框架底层源码都有他的影子,没办法,为了我自己的程序员生涯,我又不得不去学,事先说明,博主很菜,写的文档也不一定很准确,但是我还是会认真的写好这几篇关于设计模式的文章的。原创 2023-04-27 19:56:52 · 384 阅读 · 0 评论