设计模式
文章平均质量分 79
主要包含一些常用的设计模式
倚-天-照-海
这个作者很懒,什么都没留下…
展开
-
java设计模式之责任链模式
责任链模式(Iterator Pattern)是一种行为型设计模式,使多个对象都有机会处理同一个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。处理器链HandlerChain:通过数组或链表组织各个具体的处理器形成一个处理器链,提供添加处理器的方法,并调用处理器的处理方法。2.在请求处理器个数未知的情况下,或者请求处理器可动态配置的情况下,可以使用责任链模式。具体处理器Handler:对抽象处理器的具体实现,重写处理方法,调用处理器链的方法。4、使用责任链模式的样例代码一。原创 2023-06-17 05:10:50 · 7 阅读 · 0 评论 -
Java设计模式之责任链模式
责任链模式(Iterator Pattern)是一种行为型设计模式,使多个对象都有机会处理同一个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。处理器链HandlerChain:通过数组或链表组织各个具体的处理器形成一个处理器链,提供添加处理器的方法,并调用处理器的处理方法。2.在请求处理器个数未知的情况下,或者请求处理器可动态配置的情况下,可以使用责任链模式。具体处理器Handler:对抽象处理器的具体实现,重写处理方法,调用处理器链的方法。4、使用责任链模式的样例代码一。原创 2024-11-02 15:00:17 · 274 阅读 · 0 评论 -
Java设计模式之观察者模式
观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),是一种行为型模式,定义对象间一对多的依赖关系(注册),使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新(通知)。Observer 接口是抽象观察者,它监视目标对象的变化,当目标对象发生变化时,观察者得到通知,并调用 void update(Observable o,Object arg) 方法,进行相应的工作。2.当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。原创 2024-11-02 14:41:55 · 971 阅读 · 0 评论 -
Java设计模式之适配器模式
适配器模式(Adapter Pattern)是一种结构型模式,将一个接口转换成期望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。注意:适配器模式在详细设计阶段不需要考虑它,它是为了对现有系统或产品接口兼容时,也就是既成事实的情况下的补救措施。原创 2024-11-01 22:07:26 · 243 阅读 · 0 评论 -
Java设计模式之代理模式(三)
由下图可知,在 SpringBoot 1.5.x 版本中,如果配置文件中没有配置spring.aop.proxy-target-class属性,则默认加载jdk动态代理配置类。该配置项的意思是代理目标类,如果该配置项为false,则表示使用jdk动态代理,jdk是给接口生成代理类,如果为true,则表示使用cglib动态代理,cglib是给目标类生成代理类。此时如果使用 JDK 动态代理,启动时就会报错,因为 JDK 动态代理是基于接口的,代理生成的对象只能赋值给接口引用变量。原创 2024-10-27 22:27:04 · 896 阅读 · 0 评论 -
Java设计模式之代理模式(二)
JDK动态代理要求被代理的类必须实现接口,有很强的局限性,而CGLIB动态代理则不要求被代理类实现接口。简单的说,CGLIB会让生成的代理类继承被代理类,并在代理类中对代理方法进行强化处理(前置处理、后置处理等)。在CGLIB底层,其实是借助了ASM这个非常强大的Java字节码生成框架。Cglib无法代理被final修饰的方法。原创 2024-10-27 22:13:47 · 795 阅读 · 1 评论 -
Java设计模式之代理模式(一)
什么是代理?可以理解为其他对象提供一种代理以控制对这个对象的访问。举个例子,生活中的外卖平台,店铺是制作外卖的,然后放到平台上售卖。这里的店铺就是真实角色,为了能够让店铺不用担心销售等问题,从而能够更加专注做外卖,所以店铺的外卖都会放到平台上面。这里平台就是代理。平台代店家出售,而店家只需要做外卖就好了。代理模式和装饰器模式的区别:装饰器模式为了增强目标对象的功能,而代理模式是为了代理或增强目标对象的功能,本质上两者都可以为目标对象添加一些功能。代理模式可以分为静态代理和动态代理。原创 2024-10-27 21:43:09 · 787 阅读 · 0 评论 -
Java设计模式之装饰器模式
装饰器模式又称为包装(Wrapper)模式,是一种结构型模式。装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。A类是原始功能的类,B是装饰模式中对A类扩展之后的类,C是代理模式中对A类扩展之后的类。原创 2024-10-27 21:12:30 · 1089 阅读 · 0 评论 -
Java设计模式之建造者模式
建造者模式(Builder Pattern)又称构建器模式或构造器模式,是一种创建型模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。4.指挥者(Director):构造一个使用Builder接口的对象,即通过Director对象调用具体建造者完成产品的建造。1.产品的建造和表示分离,实现了解耦,可以使用相同的创建过程得到不同的产品。6.隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。1.相同的方法,不同的执行顺序,产生不同的事件结果。原创 2024-10-27 15:31:40 · 542 阅读 · 0 评论 -
Java设计模式之单例模式
然后CPU剥夺了线程1的执行权,紧接着线程2通过getInstance方法来获取实例,当执行if (instance == null)时,发现instance不为null了,就直接返回instance了,并使用instance,由于Singleton实例还未被初始化(类的静态变量都未被赋值),使用Singleton实例就会报错。作者对这个方法的评价:这种写法在功能上与共有域方法相近,但是它更简洁,无偿地提供了序列化机制,绝对防止对此实例化,即使是在面对复杂的序列化或者反射攻击的时候。1、静态内部类的方式。原创 2024-10-27 15:07:49 · 1151 阅读 · 0 评论 -
Java设计模式之工厂模式
工厂模式是一种创建型模式,它定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类。当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定创建的对象时,就需要用到工厂模式。在不使用工厂模式时,对象的创建和使用没有分离,都是在同一类中完成的。使用工厂模式之后,将对象的创建放在工厂类中,在客户端类中只需要调用工厂类的方法创建对象,然后使用对象,而无需关注对象创建的细节。因此,工厂模式完美的实现了对象创建和使用的分离。原创 2024-10-27 14:24:59 · 1054 阅读 · 0 评论 -
Java常用设计模式
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。狭义的设计模式是指GoF在《设计模式:可复用面向对象软件的基础》一书中所介绍的23种经典设计模式,不过设计模式并不仅仅只有这23种,随着软件开发技术的发展,越来越多的新模式不断诞生并得以应用。原创 2024-10-27 13:43:20 · 407 阅读 · 0 评论 -
java设计模式之策略模式
策略模式是一种行为型模式,它将对象和行为分开,将行为定义为一个行为接口和多个具体行为的实现(即多个策略)。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得算法可独立于使用它的用户而变化。原创 2023-08-27 17:45:24 · 16 阅读 · 0 评论 -
java设计模式之模板方法模式
1、模板方法模式的定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2、模板方法模式的优点和缺点:优点:1.封装不变部分,扩展可变部分。把认为是不变部分的算法封装到父类实现,而可变部分的则可以通过继承来继续扩展。2.提取公共部分代码,便于维护。3.行为由父类控制,子类实现。基本方法是由子类实现的,因此子类可以通过扩展的方式增加相应的功能,符合开闭原则。原创 2023-06-17 04:50:38 · 15 阅读 · 0 评论