
设计模式
文章平均质量分 82
雨欲语
说再见就是一点一点死去
展开
-
享元模式(结构型)
享元模式(Flyweight Pattern)是一种结构型设计模式,用于减少大量细粒度对象的内存占用。它通过共享尽可能多的相同数据来节约内存空间。原创 2024-07-24 14:49:02 · 1156 阅读 · 0 评论 -
中介者模式(行为型)
优点与缺点降低耦合性:通过引入中介者对象,同事对象不再需要显式地引用彼此。它们只需要与中介者对象通信,从而降低了对象之间的耦合度,使得代码更易于维护和扩展集中控制:中介者模式将对象之间的交互逻辑集中到一个中介者对象中,简化了对象的管理和协调,便于修改和扩展交互逻辑。提高可读性和可维护性:将复杂的对象交互逻辑从对象本身中提取出来放到中介者中,使得每个对象的职责更加单一,代码更清晰,更易于理解和维护。原创 2024-07-15 16:11:43 · 1078 阅读 · 0 评论 -
责任链模式(行为型)
责任链模式(Chain of Responsibility Pattern)也叫职责链模式,是一种行为型设计模式,职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链。并沿着这条链传递该请求,直到有一个对象处理它为止。 责任链模式由以下角色组成: 整个责任链模式的结构图: 比如一些请求制度,我们可以设置组长能够审批3天因为的假期,经理可以审批10天以内的假期,CEO可以审批30天以内的假期,不允许超过30天,这种时候就原创 2024-06-05 17:00:44 · 810 阅读 · 0 评论 -
命令模式(行为型)
优点与缺点:优点:解耦请求发送者和接收者:命名模式将请求封装成一个对象,使得发送者和接收者之间的解耦程度增加。发送者只需要知道如何发送命令,而不需要了解命令是如何被执行的。支持撤销和重做操作:由于命令对象封装了对接收者的调用,因此可以轻松地实现撤销和重做操作,只需保留历史命令对象即可。增加新的命令:通过添加新的命令类,可以轻松地扩展命令模式,而无需修改现有的客户端代码。支持组合命令:可以通过组合多个命令对象来执行复杂的操作,从而实现更高级的功能。原创 2024-05-31 17:37:42 · 995 阅读 · 0 评论 -
迭代器模式(行为型)
迭代器模式(Iterator Pattern)是一种行为型设计模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。总的来说就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。原创 2024-05-27 16:44:04 · 1197 阅读 · 0 评论 -
组合模式(结构型)
组合模式(Composite Pattern)是一种结构型设计模式,将对象组合成树形结构以表示“部分-整体”得层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。原创 2024-05-09 11:45:46 · 763 阅读 · 0 评论 -
备忘录模式(行为型)
备忘录模式(Memento Pattern)是一种行为型设计模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在之后将该对象恢复到原来保存的状态。备忘录模式由以下几个角色组成:Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复状态。原创 2024-04-30 17:27:15 · 1048 阅读 · 0 评论 -
状态模式(行为型)
状态模式(State Pattern)是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类,但实际上,由于状态模式的引入,行为的变更被封装在了一系列独立的类中,这使得代码更加清晰、易于管理和扩展。状态模式由以下几个角色组成:上下文(Context):定义客户端所感兴趣的接口,并保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态(State):可以是一个接口或抽象类,用于定义声明状态更新的操作方法。原创 2024-04-09 15:18:25 · 741 阅读 · 0 评论 -
外观模式(结构型)
外观模式(Facade Pattern)是一种结构型设计模式,它为系统中的一组复杂子系统提供一个简单的接口,从而隐藏了这些子系统的复杂性,并且使得代码更加易于使用和理解。外观模式的核心思想是将复杂的系统拆分成多个子系统,每个子系统负责一个特定的任务。然后,外观类作为这些子系统的总管,将它们组织起来,提供一个简单的接口供客户端使用。这样一来,客户端就不需要了解系统内部的复杂性和细节,只需要通过外观类提供的简单接口来访问系统即可。这种方式可以有效地降低系统的耦合度,使得系统更加易于维护和扩展。原创 2024-01-16 16:52:20 · 1248 阅读 · 0 评论 -
模板方法模式(行为型)
模板方法模式的核心思想是:定义一个抽象类,把一些抽象行为留给子类去实现,而把一些公共行为放在抽象类中实现。在模板方法模式中,抽象类中定义了一个算法框架,由具体子类来实现其中的具体步骤。模板方法模式是一种行为型设计模式,它定义了一个操作中的算法框架,将一些步骤延迟到子类中实现。- 抽象类(Abstract Class):定义了一个算法框架,其中包含了一些抽象的操作,由子类去实现。- 具体类(Concrete Class):实现了抽象类中定义的抽象方法,完成算法中的具体步骤。原创 2023-12-12 16:34:40 · 703 阅读 · 0 评论 -
建造者模式(创建型)
当我们开发一个软件应用时,我们通常需要创建各种对象。有些对象是简单的,可以直接实例化,但有些对象则比较复杂,需要多个步骤才能创建完成。这时候,建造者模式就派上用场了。 建造者模式是一种创建型设计模式,它允许我们逐步构造一个复杂的对象,而且可以控制整个构造过程。 建造者模式中有四个重要的角色: 整个建造者模式的类图: 首先建立Product类: 创建抽象的Builder类: 创建具体原创 2023-11-14 15:27:19 · 494 阅读 · 0 评论 -
桥接模式(结构型)
抽象(Abstraction):定义抽象接口,通常包含对实现接口的引用。扩展抽象(Refined Abstraction):对抽象的扩展,可以是抽象类的子类或具体实现类。实现(Implementor):定义实现接口,提供基本操作的接口。具体实现(Concrete Implementor):实现实现接口的具体类。优点与缺点:优点:实现抽象和实现的分离桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。原创 2023-11-13 14:17:24 · 316 阅读 · 0 评论 -
原型模式(创建型)
原型模式是一种创建型设计模式,它允许在运行时通过克隆现有对象来创建新对象,而不是通过常规的构造函数创建。在原型模式中,一个原型对象可以克隆自身来创建新的对象,这个过程可以通过深度克隆或浅克隆来实现。简单说原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。原创 2023-11-10 15:59:30 · 474 阅读 · 0 评论 -
装饰者模式(结构型)
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。装饰者模式符合开闭原则,即对修改关闭,对扩展开放。原创 2020-12-26 17:44:17 · 930 阅读 · 0 评论 -
策略模式(行为型)
策略模式是一种行为型的设计模式,指的是一个类的行为或者算法可以在运行时更改,也就相当于将一个类的行为或者算法封装起来,使其可以独立于客户而变化。 例如加减乘除算法,我们只需要给计算器输入具体运算方法,计算器可以使用策略模式进行运算;再比如这么多的共享单车,如果有一个统一的容器,就可以不再单独下载App了,可以使用策略模式进行选择;再比如这么多的支付方式,我们只需要...原创 2019-09-10 10:35:55 · 1659 阅读 · 0 评论 -
适配器模式—类适配器、对象适配器、接口适配器(结构型)
Adapter英文翻译是转换器、适配器、接头,从名字们就应该能很好的理解。就好比是一个转换头一样,比如去国外,很多时候我们中国带过去的电器插头就需要转换器,再比如内存卡跟电脑交互,很多时候就需要一张读卡器,此时读卡器充当的就是转换器、适配器的功能。 适配器模式将一个类的接口适配成用户所期待的,一个适配器通常允许因为接口不兼容而不能一起工作的类能够在一起工作,于是需...原创 2019-08-30 10:44:27 · 1733 阅读 · 1 评论 -
工厂模式——简单工厂模式、工厂方法模式、抽象工厂模式(创建型)
在工厂模式中,分为三种,第一种就是简单工厂模式、第二种是工厂方法模式,第三种是抽象工厂模式。所谓工厂模式,就是指有一个专门的容器之类的地方,为用户创建对象,用户不用再手动去创建对象。容器根据用户传的参数或者调用的子类来自动为其创建对象。这种设计模式在Spring中大量的使用到了。 简单工厂模式: 先介绍一下简单工厂模式,简单工厂模式中,工厂会根据...原创 2019-08-26 19:38:44 · 1253 阅读 · 1 评论 -
单例模式——Java代码实现,C#实际使用展现(创建型)
在设计模式中,单例模式可以说是最简单的一种了,主要作用是让一个类自己进行对象的创建,而且保证了只有一个对象被创建,适用于那种全局的对象。就相当于创建对象的时候不用再进行new操作了,当然,排除使用一些框架帮我们创建对象时也不使用new。 下面直接说一下几种单例模式。 懒汉式线程不安全单例: 所谓懒汉,就是指当调用的时候才去进行对...原创 2019-08-20 14:23:03 · 793 阅读 · 0 评论 -
观察者模式(结合C#委托和事件)(行为型)
观察者模式网上解释得有很多,通常这样解释:观察者模式(有时又被称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。 其实最常见的用...原创 2019-07-26 14:48:41 · 753 阅读 · 0 评论 -
代理模式——静态代理、JDK动态代理、CGLib代理(结构型)
Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。更通俗的说,代理解决的问题当两个类需要通信时,引入第三方代理类,将两个类的关系解耦,让我们只了解代理类即可,而且代理的出现还可以让我们完成与另...原创 2018-10-26 18:59:20 · 804 阅读 · 1 评论