
设计模式
文章平均质量分 93
Java设计模式
掉头发的王富贵
优快云博客专家、Java领域优质创作者,掘金优秀创作者,阿里云专家博主,专栏:《Elastic Search的RestFul API入门》
展开
-
【设计模式】我终于读懂了职责链模式。。。
职责链模式(Chain of Responsibility Pattern), 又叫 责任链模式,为请求创建了一个接收者对象的链。这种模式对请求的发送者和接收者进行解耦。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。这种类型的设计模式属于行为型模式。原创 2023-09-04 09:04:39 · 140 阅读 · 0 评论 -
【设计模式】我终于读懂了策略模式。。。
策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)原创 2023-08-21 09:46:52 · 197 阅读 · 0 评论 -
【设计模式】我终于读懂了状态模式。。。
状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。原创 2023-07-31 10:01:09 · 200 阅读 · 0 评论 -
【设计模式】我终于读懂了解释器模式。。。
在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器解释器模式(Interpreter Pattern):是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器, 使用该解释器来解释语言中的句子(表达式)应用场景应用可以将一个需要解释执行的语言中的句子表示为一个抽象语法树一些重复出现的问题可以用一种简单的语言来表达一个简单语法需要解释的场景。原创 2023-07-24 10:14:36 · 171 阅读 · 0 评论 -
【设计模式】我终于读懂了备忘录模式。。。
备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作备忘录模式属于行为型模式。原创 2023-07-10 10:15:43 · 557 阅读 · 0 评论 -
【设计模式】我终于读懂了中介者模式。。。
中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互中介者模式属于行为型模式,使代码易于维护比如 MVC 模式,C(Controller 控制器)是 M(Model 模型)和 V(View 视图)的中介者,在前后端交互时起到了中间人的作用。原创 2023-06-12 10:00:51 · 268 阅读 · 0 评论 -
【设计模式】我终于读懂了观察者模式。。。
Observable 和 Observer 的使用方法和前面讲过的一样,只是 Observable 是类,通过继承来实现观察者模式。的作用和地位等价于 我们前面讲过 Subject,Observable 是类,不是接口,类中已经实现了核心的方法 ,即管理。用户是 Observer,是多的一方。对象之间多对一依赖的一种设计方案,被依赖的对象为 Subject,依赖的对象为 Observer,Subject。当数据有更新时,就主动的调用 ArrayList, 通知所有的(接入方)就看到最新的信息。原创 2023-05-22 14:28:06 · 1938 阅读 · 0 评论 -
【设计模式】我终于读懂了迭代器模式。。。
迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。原创 2023-05-01 21:43:38 · 747 阅读 · 2 评论 -
【设计模式】我终于读懂了模板方法模式。。。
模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤这种类型的设计模式属于行为型模式。原创 2023-02-27 10:51:15 · 352 阅读 · 0 评论 -
【设计模式】我终于读懂了代理模式。。。
1)代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。2)被代理的对象可以是远程对象创建开销大的对象或需要安全控制的对象3)代理模式有不同的形式, 主要有三种静态代理动态代理(JDK 代理、接口代理)和Cglib 代理(可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴)。1)防火墙代理内网通过代理穿透防火墙,实现对公网的访问。2)缓存代理。原创 2023-02-13 11:52:29 · 1619 阅读 · 5 评论 -
【设计模式】我终于读懂了享元模式。。。
1)享元模式(Flyweight Pattern) 也叫蝇量模式: 运用共享技术有效地支持大量细粒度的对象2)常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个3)享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。原创 2023-01-28 10:47:10 · 570 阅读 · 0 评论 -
【设计模式】我终于读懂了外观模式。。。
设计模式之外观模式原创 2023-01-23 10:00:00 · 2197 阅读 · 2 评论 -
【设计模式】我终于读懂了组合模式。。。
1)组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。2)组合模式依据树形结构来组合对象,用来表示部分以及整体层次。3)这种类型的设计模式属于结构型模式。4)组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。原创 2023-01-09 10:48:46 · 653 阅读 · 0 评论 -
【设计模式】我终于读懂了装饰者模式。。。
1)装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)2)这里提到的动态的将新功能附加到对象和 ocp 原则,在后面的应用实例上会以代码的形式体现。原创 2022-12-23 09:52:43 · 1294 阅读 · 1 评论 -
【设计模式】我终于读懂了桥接模式。。。
1)桥接模式(Bridge 模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。2)是一种结构型设计模式3)Bridge 模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。原创 2022-11-28 10:05:05 · 195 阅读 · 0 评论 -
我终于读懂了适配器模式。。。
1)适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)2)适配器模式属于结构型模式3)主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。原创 2022-11-14 10:18:50 · 2247 阅读 · 4 评论 -
我终于读懂了建造者模式。。。
抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式不需要关心构建过程,只关心什么产品由什么工厂生产即可。2)每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者, 用户使用不同的具体建造者即可得到不同的产品对象。1)客户端(使用程序)不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。创建产品的过程(即:建房子流程) 封装在一起,耦合性增强了。原创 2022-11-07 10:00:28 · 149 阅读 · 0 评论 -
我终于读懂了原型模式。。。
1)原型模式(Prototype 模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象2)原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节3)工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即 对象.clone()4)形象的理解:孙大圣拔出猴毛, 变出其它孙大圣原型模式原理结构图-uml 类图原理结构图说明。原创 2022-10-31 10:37:57 · 163 阅读 · 1 评论 -
我终于读懂了工厂模式。。。
1)简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,工厂模式分为简单工厂模式及工厂方法模式2)简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)3)在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式.原创 2022-10-24 09:44:48 · 261 阅读 · 0 评论 -
我终于读懂了单例模式。。。
🔍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。🔎比如 Hibernate 的 SessionFactory,它充当数据存储源的代理,并负责创建 Session对象。SessionFactory 并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory就够,这是就会使用到单例模式。原创 2022-10-18 09:44:01 · 652 阅读 · 0 评论 -
我终于读懂了设计模式的七大原则。。。
子类中尽量不要重写父类的方法分析我们发现原来运行正常的相减功能发生了错误。原因就是类 B 无意中重写了父类的方法,造成原有功能出现错误。在实际编程中,我们常常会通过重写父类的方法完成新的功能,这样写起来虽然简单,但整个继承体系的复用性会比较差。特别是运行多态比较频繁的时候通用的做法是:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖,聚合,组合等关系代替.原创 2022-10-13 09:41:23 · 23257 阅读 · 12 评论 -
23 种设计模式的通俗解释
01 工厂方法追 MM 少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西,虽然口味有所不同,但不管你带 MM 去麦当劳或肯德基,只管向服务员说「来四个鸡翅」就行了。麦当劳和肯德基就是生产鸡翅的 Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。02 建造者模式MM 最爱听的就是「我爱你」这句话了,见到不同地方的 MM,要能够用她们的方转载 2021-03-08 11:58:13 · 723 阅读 · 0 评论 -
最精简:设计模式之单例模式
懒汉式public class SingletonLazy { public static void main(String[] args) { Order instance = Order.getInstance(); Order instance2 = Order.getInstance(); System.out.println(instance == instance2); }}class Order{ priva原创 2020-10-24 16:33:19 · 699 阅读 · 0 评论 -
最精简:设计模式之模板方法模式
public abstract class BankTest { public static void main(String[] args) { DrawMoney drawMoney = new DrawMoney(); drawMoney.dothing(); ManagerMoney managerMoney = new ManagerMoney(); managerMoney.dothing(); } p原创 2020-10-24 16:31:46 · 776 阅读 · 0 评论 -
带你以第一人称的视角了解23种设计模式-java版
1.工厂模式:工厂模式分为简单工厂模式及工厂方法模式例如:你想要买一辆车,肯定不能自己new一辆车出来,这个时候就需要工厂来帮忙:public class CarFactory { //方法一// public static Car getCar(String name) {// if ("aodi".equals(name)) {// return new AoDi();// }else if ("baoma".equals(原创 2021-02-17 22:21:29 · 833 阅读 · 0 评论