设计模式大全
文章平均质量分 57
怎么又有bug单
走走停停
展开
-
JAVA 二十三种设计模式大全(二十七)六大设计原则
文章目录设计模式总述详述单一职责原则SRP开放-关闭原则OCP里氏替换原则LSP依赖倒转原则DIP接口隔离原则ISP迪米特法则LOD设计模式总述设计有如下:单一职责原则 (Single Responsibility Principle)开放-关闭原则 (Open-Closed Principle)里氏替换原则 (Liskov Substitution Principle)依赖倒转原则 (Dependence Inversion Principle)接口隔离原则 (Interface Segr原创 2022-02-14 21:47:45 · 116 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(一)单例模式
概念只需要单个实例:比如factory写法:第一种:/** * 饿汉式 * 类加载到内存中后,就实例化一个单例,JVM保证线程安全: * 因为JVM加载类 保证只会加载一次 */public class Single01 { private static final Single01 INSTANCE = new Single01(); private Single01() { } public static Single01 getInstance(原创 2022-02-03 15:57:59 · 306 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(二十五)装饰器模式(Decorator Pattern)
装饰器模式(Decorator Pattern)概念装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。介绍**意图:**动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生原创 2022-02-05 13:19:13 · 93 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(四)中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)概念中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。比如消息中间件mq介绍**意图:**用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。**主要解决:**对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同原创 2022-02-05 10:39:19 · 90 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(二十六)抽象工厂模式
抽象工厂模式概念抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。介绍**意图:**提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。**主要解决:**主要解决接口选择的问题。**何时使用:**系统的产品有多于一个的产品原创 2022-02-05 10:38:42 · 70 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(三)工厂模式
工厂模式概念工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍**意图:**定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。**主要解决:**主要解决接口选择的问题。**何时使用:**我们明确地计划不同条件下创建不同实例时。**如何解决:**让原创 2022-02-05 10:38:04 · 111 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(五)外观模式(Facade Pattern)
外观模式(Facade Pattern)概念外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。介绍**意图:**为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。**主要解决:**降低访问复杂系统的内部子系统时的复杂度,简原创 2022-02-05 10:39:55 · 103 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(九)享元模式(Flyweight Pattern)
文章目录概念介绍代码总结概念享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被用来检查现有的 Circle 对象。介绍意图:运用共享技术有效地支持大量细粒度的对象。主原创 2022-02-06 12:04:14 · 78 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(二十四)组合实体模式(Composite Entity Pattern)
文章目录概念代码概念组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。组合实体(Composite Entity) - 它是主要的实体 bean。它可以是粗粒的,或者可以包含一个粗粒度对象,用于持续生命周期。粗粒度对象(Coarse-Grained Obje原创 2022-02-06 12:04:36 · 106 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(二)策略模式
策略模式概念在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍**意图:**定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。**主要解决:**在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。**何时使用:**一个系统有许多许多类,而区分它原创 2022-02-05 10:37:11 · 107 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十一)代理模式(Proxy Pattern)(二)静态代理
文章目录设计图代码设计图其实主要还是多态的体现代码public interface Movable { void move();}public class LogProxy implements Movable{ private Logger logger = LoggerFactory.getLogger("LogProxy"); private Movable m; public LogProxy(Movable m){ this.m =原创 2022-02-07 09:16:00 · 72 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十三)迭代器模式(Iterator Pattern)
文章目录概念介绍设计代码总结概念迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。介绍意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时使用:遍历一个聚合对象。如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。关键代码:定义接口:hasNext, next。应原创 2022-02-08 09:51:41 · 109 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十二)代理模式(Proxy Pattern)(三)动态代理
文章目录改进(需求)代码改进(需求)我们的静态代理,只能代理一个固定的接口。比如在(二)中,我们写了4个类去实现Movable接口,也就是4个类代理一个类。那我如果现在多写一个Eatable接口,那我又需要再写4个类去代理它(假如要实现的功能与上面类似时)。那这样似乎又是在重复堆砌了,能否有一种把所要代理的接口写活的方法呢?让我们只需要写一次代理类,处处使用?代码注:带$符号的都是代理类...原创 2022-02-07 09:52:12 · 463 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(七)责任链模式(Chain of Responsibility Pattern)(二)
文章目录需求:示意图:代码:需求:在上面的基础上,我们还希望做到如果在责任链的某一环不符合某些条件了,则停止责任链继续向下示意图:代码:设计思路:我们实际过滤链传一个包装类,其中一部分是用户的输入,一部分是用于其他判断的参数与(一)中的改动:main函数传参需要传一个request,而不只是字符串;不过不需要用户设置其他属性,仍然只需要塞一个字符串filter接口重载一个方法,入参出参均为requestfilterDemo都重写此方法,不符合规范的会停止过滤下面把代码贴出来,方原创 2022-02-06 12:05:19 · 413 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(六)责任链模式(Chain of Responsibility Pattern)
文章目录责任链模式(Chain of Responsibility Pattern)概念介绍代码责任链模式(Chain of Responsibility Pattern)概念顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者原创 2022-02-06 12:05:27 · 103 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十)代理模式(Proxy Pattern)(一)
文章目录概念介绍代码概念在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。介绍意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象原创 2022-02-06 12:57:34 · 112 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(八)观察者模式(Observer Pattern)
文章目录概念介绍代码概念当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。如何解决:原创 2022-02-06 12:04:53 · 112 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十六)适配器模式(Adapter Pattern)
概念适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。设计我们设计一个高级音乐播放器,再设计一个普通音乐播放器,让高级音乐播放器去兼容普通播放器。普通音乐播放器我们允许播放mp3,高级的我们允许播mp4,mp5,原创 2022-02-09 20:55:57 · 103 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(二十)命令模式(Command Pattern)
概念命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。设计其实就是把“动作”和“命令”两个概念分开我们之前的写法,都是直接从对象里面调它的方法,比如从Clothes类里调BuyClothes方法,这时候我们其实忽略了“命令”这一层。而命令其实就是用户调用方法这中间的一层。命令模式把这一层突出了出来,对于“用户的调用”,我们把它抽象为“原创 2022-02-10 22:08:32 · 387 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(二十一)解释器模式(Interpreter Pattern)
文章目录概念理解代码概念解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。理解按照一定的语法结构设计表达式,然后再用标准化的解释器对表达式进行解释。比如说:我们规定第一个单词代表姓名,第二个单词代表是否结婚那么:Jack Married 代表jack已婚Emma NoMarried 代表Emma未婚代码public inte原创 2022-02-10 22:09:36 · 84 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十四)建造者模式(Builder Pattern)
文章目录概念介绍代码@Builder:自己写一个类似的概念建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍**意图:**将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。**主要解决:**主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象原创 2022-02-09 20:54:23 · 171 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十八)过滤器模式(Filter Pattern)
文章目录概念设计代码概念过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。设计代码设计如下图需要说明下的就是性别用了一个枚举类,以方便在过滤时,可以把过滤的性别作为参数传入过滤器。考虑到过滤器的接口方法入参只有一个(为了抽象程度高,所以不扩展更多入参)所以把额外的属性(比如过滤的年龄,性原创 2022-02-10 22:06:43 · 1089 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十九)组合模式(Composite Pattern)
文章目录概念设计代码概念组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。设计组合模式就比较简单了,说白了就是一个pojo类中再包一个pojo类。比如说我们创建一个公司类Company,那么内部员工就是Employee类,而Employee本身也是一个p原创 2022-02-10 22:07:38 · 91 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十五)原型模式(Prototype Pattern)
文章目录概念介绍总结概念原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。介绍**意图:**用原型实例指定创建对象的种类,并且通过拷贝这些原型创建原创 2022-02-09 20:55:17 · 86 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(十七)桥接模式(Bridge)
文章目录概念设计图代码:概念桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。设计图代码:public interface Draw原创 2022-02-09 20:58:08 · 92 阅读 · 0 评论 -
JAVA 二十三种设计模式大全(二十三)在状态模式(State Pattern)
文章目录概念设计代码概念在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。设计根据context上下文中的状态,来区分行为。代码public interface State { void doAction();}public class StartState implements State{ @Override原创 2022-02-10 22:11:42 · 66 阅读 · 0 评论