![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 79
力不竭!!!战不止!!!
You just run, OK?
展开
-
模版方法设计模式(Template Method Design Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]
模板方法设计模式(Template Method Design Pattern)是一种行为型设计模式,它定义了一个算法的步骤骨架,将这些步骤的具体实现延迟到子类中。模板方法模式可以使子类在不改变算法结构的情况下,重新定义算法中的某些步骤。原创 2023-04-30 18:24:20 · 4914 阅读 · 20 评论 -
观察者设计模式(Observer Design Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]
观察者设计模式(Observer Design Pattern)是一种行为型设计模式,它定义了一种对象间的一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象状态发生改变时,通知所有观察者对象,使它们能够自动更新。方法中,我们创建了一个具体主题和两个具体观察者,将观察者添加到主题中,然后改变主题的状态并观察输出结果。方法中,它会遍历所有注册的监听器,并将事件分发给匹配的监听器。,该方法会遍历注册的监听器,并将事件分发给匹配的监听器。接口,因此在Spring中,事件发布主要由。原创 2023-04-24 17:08:11 · 1230 阅读 · 87 评论 -
备忘录设计模式(Memento Pattern)[论点:概念、组成角色、示例代码、框架中的运用、适用场景]
每次执行操作时,我们都将当前余额保存到一个BankAccountMemento(Memento)对象中,并将其添加到BankAccountCaretaker对象的列表中。当需要执行撤销操作时,我们可以通过BankAccountCaretaker对象获取相应的BankAccountMemento对象,并将BankAccount的余额恢复到先前的状态。备忘录模式(Memento Pattern)是一种行为型设计模式,主要用于保存对象的内部状态,以便在需要时恢复到先前的状态。组件,并添加撤销和重做按钮。原创 2023-04-23 16:20:20 · 739 阅读 · 2 评论 -
中介者设计模式(Mediator Design Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]
中介者设计模式是一种行为型设计模式,它通过引入一个中介对象来封装一组对象之间的交互,使得对象之间不需要显式地相互引用,从而降低它们之间的耦合。通过将对象间的通信封装到中介者对象中,可以更容易地对这些对象的交互进行维护和修改。原创 2023-04-21 17:56:07 · 698 阅读 · 9 评论 -
迭代器设计模式(Iterator Design Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]
迭代器设计模式(Iterator Design Pattern)是一种行为型设计模式,它提供了一种方法来顺序访问一个聚合对象(如集合)的元素,而不需要暴露该对象的底层表示。迭代器模式可以帮助我们在不关心底层数据结构的情况下,遍历一个集合。原创 2023-04-19 16:03:35 · 575 阅读 · 16 评论 -
命令设计模式(Command Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]
(Command Pattern)是一种行为设计模式,它将请求的操作封装为一个对象,从而实现请求者和执行者之间的解耦。这样,请求者只需要知道如何发送请求,而无需关心请求的具体执行过程。在Dubbo框架中,命令模式被用于处理网络通信中的请求和响应。这是Dubbo通信层中的一个关键接口,它代表了一个通信通道。对象,并调用相应的方法进行处理。例如,当分发器收到一个请求时,它会调用。接口,它负责分发请求和响应。2、当通道收到一个请求或响应时,它会将其封装为。类包含请求的数据以及请求的ID,而。原创 2023-04-18 14:04:04 · 859 阅读 · 27 评论 -
策略设计模式(Strategy Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]
(Strategy Pattern)是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式使得算法可以独立于使用它的客户端变化。这种模式的主要目的是将算法的定义与使用分离,以提高代码的灵活性和可重用性。原创 2023-04-14 18:00:25 · 516 阅读 · 14 评论 -
带你玩转状态机(论点:概念、相关图示、示例代码、适用场景、相关文档)
状态机(State Machine)是一种用于描述系统在不同状态下的行为及状态之间转换的数学模型。状态(State)、事件(Event)和转换。原创 2023-04-14 15:32:34 · 2781 阅读 · 27 评论 -
状态设计模式(State Pattern)[论点:概念、相关角色、图示、示例代码、框架中的运用、适用场景]
一个常见的使用状态设计模式的例子是Java线程的状态管理。Java的Thread类使用了状态模式来表示线程的不同状态,例如:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED。这些状态之间的转换由Thread类和相关的方法控制。(State Pattern)是一种行为型设计模式,用于解决对象在不同状态下的行为问题。它允许一个对象在其内部状态改变时改变它的行为。原创 2023-04-13 17:07:09 · 1011 阅读 · 32 评论 -
责任链设计模式(Chain of Responsibility Pattern)[论点:概念、组成角色、图示、相关代码、框架中的运用、适用场景]
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,其主要目的是将请求的发送者和接收者解耦。当一个请求到来时,这些处理器按照顺序处理请求,直到其中一个处理器成功处理请求为止。:在Spring MVC框架中,当请求经过过滤器链处理并到达Servlet之后,请求会被传递给DispatcherServlet。DispatcherServlet的主要职责是将请求分发给适当的处理器(如Controller方法)。原创 2023-04-12 16:55:36 · 731 阅读 · 22 评论 -
生成器设计模式(Builder Design Pattern)[论点:概念、图示、示例、框架中的应用、场景]
生成器模式通过将对象的构建过程与其表示分离,使得相同的构建过程可以创建不同的表示。例如,假设有一个Report类,它需要根据不同的数据源(如CSV文件、数据库等)以及不同的格式(如HTML、PDF等)生成报告。在这种情况下,可以创建多个生成器,每个生成器负责从特定的数据源中读取数据并生成特定格式的报告。在这种情况下,我们可以使用一个汽车生成者,并通过提供不同的颜色、轮胎类型和发动机类型来创建具有不同属性的汽车。当一个复杂对象的变化仅仅是属性值的变化,而不涉及到整体结构的变化时,只需要一个生成者。原创 2023-04-11 16:03:37 · 2311 阅读 · 43 评论 -
GOF设计模式之创建型模式小结
创建型模式有以下五种工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)工厂模式????????定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。对外部应隐藏内部的复杂实现,调用者只需要关注以那种方式调用产生自己想要的对象。但是每次增加一个产品时,都需要增原创 2021-08-28 19:55:36 · 204 阅读 · 0 评论 -
GOF设计模式之责任链模式(行为型模式)
????责任链模式是什么 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。????责任链模式能干什么 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责原创 2021-08-27 12:12:38 · 232 阅读 · 1 评论 -
GOF设计模式之代理模式(结构型代理模式)
1、职责清晰:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用2、高扩展性:代理对象可以扩展目标对象的功能3、智能化:代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。...原创 2021-08-25 20:12:51 · 5834 阅读 · 0 评论 -
GOF设计模式之享元模式(结构型代理模式)
相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。原创 2021-08-24 21:29:28 · 5822 阅读 · 0 评论 -
GOF设计模式之外观模式(结构型代理模式)
1、减少系统相互依赖:降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。2、提高灵活性:降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程,因为编译一个子系统不会影响其他的子系统,也不会影响外观对象。3、提高了安全性:对客户屏蔽了子系统组件的内部构造和逻辑。1、不符合开闭原则,增加新的子系统可能需要修改外观类或客户端的源代码(特殊情况下会很麻烦),继承重写都不合适。2、不能很好地限制客户使用子系统类,很容易带来未知风险。...原创 2021-08-23 20:36:43 · 5921 阅读 · 4 评论 -
GOF之装饰器模式(结构型模式) ✨ 每日积累
装饰器模式是什么 装饰器模式是向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。装饰器模式能干什么 我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀,原创 2021-08-21 22:53:46 · 6834 阅读 · 5 评论 -
GOF设计模式之组合设计模式(结构型模式) ✨ 每日积累
组合模式是什么组合模式(Composite Pattern),又叫部分整体模式,作为结构型模式,组合模式是用于把一组相似的对象当作一个单一的对象。组合多个对象形成树形结构来表示“整体-部分”的关系层次,它创建了对象组的树形结构。组合模式能干什么 它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式优缺点优点1、高层模块调用简单:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无原创 2021-08-20 23:29:20 · 6690 阅读 · 2 评论 -
GOF之桥接模式(结构型模式) ✨ 每日积累
桥接模式是什么 桥接模式是结构型模式,当系统中的某个类中存在两个或者以上的维度的变化,可以将每个维度分离出来,使得每个维度都可以进行独立扩展,符合单一职责的原则。将抽象部分与实现部分分离,使它们都可以独立的变化。桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系(看完下文内容自会理解),使得系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。桥接模式使用场景1、如果一个系统需要在构件的抽象化角色和具体化角色之间增原创 2021-08-19 23:22:33 · 6661 阅读 · 3 评论 -
GOF之适配器模式(结构型模式) ✨ 每日积累
适配器模式是什么 适配器模式将一个接口转换成客户希望的另外一个接口。它使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作。是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。适配器能什么 有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。其实适配器模式有点无奈之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该考虑通过重构统一接口。适配器模式优缺点优点:原创 2021-08-18 21:10:50 · 6626 阅读 · 1 评论 -
GOF之原型设计模式(创建型模式) ✨ 每日积累
原型模式是什么 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。是一种能快速创建相似对象的模式。在软件开发中应用较为广泛。原型模式优缺点优点:1、 当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率性能提高。2、逃避构造函数的约束。(在执行clone进行克隆时,并不会重新执行构造函数)3、可以使用深克隆保存对象的一些属性。缺点原创 2021-08-17 23:34:41 · 6587 阅读 · 0 评论 -
GOF之建造者模式(创建型模式)附图详解 ✨ 每日积累
建造者模式是什么 建造者模式属于创建型设计模式,它提供了一种创建对象的最佳方式,使用多个简单的对象一步一步构建成一个复杂的对象,在用户不知道建造过程和细节的情况下直接创建复杂的对象。调用这只修奥给出指定复杂对象的类型和内容,建造者复杂按照顺序创建复杂对象。例如用户购买笔记本:用户并不需要知道笔记本组成的细节以及如何组装,只需要告诉需要购买的牌子和配置即可。建造者模式的优缺点优点 产品的建造和表示分离,实现解耦。客户端不需要知道内部的组成和建造细节。 将复杂产品的创建过程分解在不同的方法原创 2021-08-16 22:54:03 · 6727 阅读 · 1 评论 -
GOF之抽象工厂模式(创建型模式) ✨ 每日积累
抽象工厂模式是什么 之前一文中,有提到工厂模式,工厂模式是能创建一种类型产品的工厂,而抽象工厂则是一个超级工厂,它定义了多种类型产品的工厂。即抽象工厂定义了一个超级工厂,用户创建相关或者有依赖关系的对象簇,而无序制定具体的类。讲工厂抽象成2层,由抽象工厂(超级工厂)和具体实现的工厂子类(产品簇工厂)组成。程序员可以根据创建对应的对象类型来使用对应的工厂子类。这样将单个简单的工厂诶变成工厂簇,更加利于代码的维护和扩展抽象工厂优缺点优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始原创 2021-08-15 17:55:06 · 7521 阅读 · 2 评论 -
GOF之单例模式(创建型模式) ✨每日积累
单例模式是什么 创造型设计模式,负责自己创建自己的对象,构造器私有化,不允许外界直接new自己,确保每一次都只有单个对象被创建,这个类提供了一种访问自身对象的一个入口,可以直接访问。优点是可以在内存中只有一个实例,减少了内存的开销,尤其是频繁创建和销毁实例;还有对资源的多重占用(例如写io操作)。缺点就是不能继承,没有接口,与单一职责冲突,一个类只关心自己创建自己对象的逻辑,不关心外面如何实例化。单例模式三个特点1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必原创 2021-08-12 23:29:37 · 7597 阅读 · 0 评论 -
GOF之工厂模式(创建型模式) ✨ 每日积累
工厂模式是什么 工厂设计模式事常见的设计模式,属于创建型模式。在工厂中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。一般在创建复杂对象的地方可以选择使用工厂模式,简单对象的话可以使用new去创建。工厂除了将创建和使用对象分离,还有一个作用就是可以屏蔽一些创建对象后初始化的事情,如果直接反射具体的产品对象,那么反射对象后,需要每次都做初始化的工作,而放在工厂中,就不需要每次都初始化了工厂模式优缺点优点: 1、一个调用者想创建一个对象,只要知道其名称就可原创 2021-08-13 23:14:36 · 7621 阅读 · 0 评论