
设计模式
文章平均质量分 62
在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。
流华追梦
15年+ IT从业经验,互联网高级算法工程师、Java语言专家、.Net专家、博客专家、阿里云专家、优快云2023博客之星,优快云付费资源项目实践专家,谢谢关注!
展开
-
设计模式 - 备忘录模式
备忘录模式又称快照模式,是一种行为型设计模式。它可以在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要的时候恢复到原先保存的状态。在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。原创 2023-10-10 14:48:46 · 397 阅读 · 0 评论 -
设计模式 - 中介者模式
中介者模式又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式可以使对象之间的关系数量急剧减少,通过引入中介者对象,可以将系统的网状结构变成以中介者为中心的星形结构,任何一个类的变动,只会影响的类本身,以及中介者,这样就减小了系统的耦合。一个好的设计,必定不会把所有的对象关系处理逻辑封装在本类中,而是使用一个专门的类来管理那些不属于自己的行为。原创 2023-10-10 11:08:29 · 448 阅读 · 1 评论 -
设计模式 - 迭代器模式
迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。原创 2023-10-09 17:27:43 · 493 阅读 · 2 评论 -
设计模式 - 解释器模式
解释器模式(Interpreter Pattern)指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子,属于行为型设计模式。是一种按照规定的文法(语法)进行解析的模式。其核心思想就是识别文法,构建解释。原创 2023-10-09 15:54:49 · 365 阅读 · 0 评论 -
设计模式 - 状态模式
状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式和区别1、策略模式封装了一组行为或者算法,它允许Client在运行时动态的切换;状态模式是帮助一个类在不同的状态下显示不同的行为,依赖于内部的状态;2、策略模式不持有Context的引用,而是被Context所使用;原创 2023-10-09 09:55:22 · 714 阅读 · 0 评论 -
设计模式 - 访问者模式
访问者模式,即在不改变聚合对象内元素的前提下,为聚合对象内每个元素提供多种访问方式,即聚合对象内的每个元素都有多个访问者对象。访问者模式主要解决稳定的数据结构和易变元素的操作之间的耦合问题。原创 2023-10-08 17:15:31 · 378 阅读 · 0 评论 -
设计模式 - 观察者模式
观察者模式属于行为型模式。在程序设计中,观察者模式通常由两个对象组成:观察者和被观察者。当被观察者状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应,所以也被称作“原创 2023-10-08 11:12:08 · 590 阅读 · 0 评论 -
设计模式 - 命令模式
命令模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开,解耦合。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。命令模式的本质是对请求进行封装,一个请求对应于一个命令,将发出命令的责任和执行命令的责任分割开。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行相应的操作。原创 2023-10-08 10:52:29 · 433 阅读 · 0 评论 -
设计模式 - 模板模式
模板模式是一种基于继承实现的设计模式,它是行为型的模式。主要思想是将定义的算法抽象成一组步骤,在抽象类种定义算法的骨架,把具体的操作留给子类来实现。通俗地说,模板模式就是将某一行为制定一个框架,然后子类填充细节。比如说做菜,流程通常就是洗菜、切菜、炒菜等步骤,那么这个流程就可以看作是一个模板,而具体做什么菜由子类来实现。原创 2023-10-08 10:12:28 · 225 阅读 · 0 评论 -
设计模式 - 策略模式
策略模式 (Strategy Pattern) 是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。此模式让算法的变化独立于使用算法的客户。与状态模式的比较状态模式的类图和策略模式类似,并且都是能够动态改变对象的行为。但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。原创 2023-09-27 14:35:05 · 767 阅读 · 0 评论 -
设计模式 - 责任链模式
责任链(Chain of Responsibility)模式的定义:也叫职责链模式。为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理者解耦了。二. 实现Handler: 定义处理请求的接口,并且实现后继链(successor)@Override。原创 2023-09-26 17:39:28 · 358 阅读 · 0 评论 -
设计模式 - 代理模式
代理模式(Proxy Pattern),为某个对象提供一种代理以控制对对象的访问。即客户端可通过代理对象间接访问目标对象,同时可限制、增强、修改目标对象的一些特性。访问者不想或者不能直接访问目标对象,代理对象作为目标对象和访问者之间的中介。:控制对远程对象(不同地址空间)的访问,它负责将请求及其参数进行编码,并向不同地址空间中的对象发送已经编码的请求。原创 2023-09-26 11:15:03 · 444 阅读 · 1 评论 -
设计模式 - 享元模式
享元模式(Flyweight Pattern)是一种结构型设计模式,它主要解决的问题是创建大量相似对象时的内存开销问题。该模式通过共享具有相同状态的对象来减少内存使用量。享元模式的思想是:当需要创建一个新对象时,首先检查是否已经存在具有相同状态的对象。如果存在,则返回已经存在的对象,否则创建一个新的对象。因此,如果要创建多个具有相同状态的对象,可以重复使用相同的对象,从而减少内存开销。通过运用共享技术来有效地支持大量细粒度对象的复用。原创 2023-09-26 10:52:48 · 529 阅读 · 0 评论 -
设计模式 - 装饰者模式
装饰者模式(Decorator Pattern): 动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。原创 2023-07-17 13:58:04 · 157 阅读 · 2 评论 -
设计模式 - 组合模式
组合模式(Composite Pattern): 允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。组合多个对象形成树形结构以表示具有“整体-部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体-部分”(Whole-Part)模式,它是一种对象结构型模式。原创 2023-07-14 16:00:10 · 126 阅读 · 1 评论 -
设计模式 - 桥接模式
桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。桥接模式使用“对象间的关联关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。所谓抽象和实现沿着各自维度的变化,也就是说抽象和实现不再在同一个继承层次结构中,而是“子类化”它们,使它们各自都具有自己的子类,以便任何组合子类,从而获得多维度组合对象。原创 2023-07-14 15:19:17 · 169 阅读 · 3 评论 -
设计模式 - 适配器模式
适配器模式(Adapter Pattern):将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。对象适配器使用组合,类适配器使用多重继承。原创 2023-07-13 15:15:31 · 167 阅读 · 0 评论 -
设计模式 - 外观模式
结构型 - 外观模式(Facade Pattern)又叫门面模式,它提供了一个统一的接口,用来访问子系统中的一群接口,从而让子系统更容易使用。原创 2023-07-13 14:12:08 · 154 阅读 · 0 评论 -
设计模式 - 原型模式
原型模式(Prototype),使用原型实例指定要创建对象的类型,通过复制这个原型来创建新对象。它的工作原理很简单:将一个原型对象传给要发动创建的对象(即客户端对象),这个要发动创建的对象通过请求原型对象复制自己来实现创建过程。原创 2023-07-13 11:34:54 · 163 阅读 · 0 评论 -
设计模式 - 生成器模式
又叫建造者模式,是一种对象构建模式。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。原创 2023-07-13 10:43:42 · 196 阅读 · 0 评论 -
设计模式 - 抽象工厂模式
抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。抽象工厂模式用到了工厂方法模式来创建单一对象,AbstractFactory 中的 createProductA() 和 createProductB() 方法都是让子类来实现,这两个方法单独来看就是在创建一个对象,这符合工厂方法模式的定义。原创 2023-07-13 09:33:53 · 183 阅读 · 1 评论 -
设计模式 - 工厂模式
工厂模式(Factory Pattern),它定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。原创 2023-07-12 16:38:49 · 223 阅读 · 1 评论 -
设计模式 - 简单工厂模式
简单工厂不是设计模式,更像是一种编程习惯。它把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化,这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。原创 2023-07-10 11:20:03 · 200 阅读 · 1 评论 -
设计模式 - 单例模式
实现方式原理优点缺点饿汉模式依赖JVM类加载机制保证实例只被创建1次1.代码简单,创建单例最简单的一种方式。2.线程安全3.速度快,类加载时已经初始化浪费资源。没有调用对象,也会创建懒汉模式 - 线程不安全类加载时先不自动创建实例,需要时才手动创建1.按需加载2.节约资源1.线程不安全懒汉模式 - 线程安全使用同步锁sychronized锁住方法块1.线程安全2.按需加载3.节约资源效率低下,锁的粒度太大,每次调用都会进行线程同步懒汉模式 - 双重校验。原创 2023-07-10 10:46:31 · 289 阅读 · 1 评论 -
24大设计模式总结
设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将对24种设计模式进行总结和阐述具体意义。创建型(6种)、行为型(11种)、结构型(7种)。原创 2023-07-07 17:08:45 · 2578 阅读 · 5 评论