合集-Java设计模式
摘要:1.简单工厂模式 主要是利用了类的继承性;通过接口的子类为接口对象实例化 简单工厂模式创建 /* 提供创建对象的接口 */ public interface Demo { public void make(String demoName); } /* 提供创建对象实例工厂instance1Facto
阅读全文
摘要:饿汉模式 public class Singleton { /* 在类装载的时候就完成实例化 */ private static Singleton instance = new Singleton(); /* 私有构造方法,防止被实例化 */ private Singleton() { } /*
阅读全文
摘要:桥接模式是一种软件设计模式,它可以将抽象部分与它们的实现部分分离开来,以便两者都可以独立地进行变化。该模式使用组合而不是继承来完成这一点。 在桥接模式中,抽象部分和实现部分之间建立了一个桥梁(Bridge)。抽象部分定义出高层次结构,而实现部分定义出低层次结构。通过桥梁,抽象部分和实现部分可以独立地
阅读全文
摘要:当系统中存在大量相似对象时,使用享元模式可以有效地减少内存的使用和对象的创建数量。享元模式是一种结构型设计模式,通过共享已经存在的对象来减少内存使用和对象创建的数量。 享元模式的核心思想是将可复用的对象缓存起来,在需要时直接从缓存中获取,而不是重新创建一个新的对象。这些可复用的对象通常会被设计为不可
阅读全文
摘要:原型模式允许对象在不重新创建的情况下通过复制来生成新的实例。这通常比直接创建一个新对象更加高效。简单来说,原型模式就是通过复制一个已有的对象来创建新的对象。 首先,我们需要定义一个实现Cloneable接口的原型类,以便使用clone()方法进行复制: public class Prototype
阅读全文
摘要:建造者模式的生命周期通常包括以下步骤: 创建一个建造者对象 调用该创建者对象的一系列设置方法,以指定对象的各个属性 调用build()方法,该方法将运行实际的构建过程 返回构建的对象 建造者模式可以减少代码的重复性,并且可以简化创建复杂对象的过程,从而提高代码的可读性和可维护性。由于它提供了灵活的构
阅读全文
摘要:职责链模式是一种行为设计模式,它允许你将请求沿着处理者链进行传递,直到其中一个处理者能够处理该请求为止。 > 示例代码 ```java // 抽象处理者 public abstract class Handler { protected Handler successor; public void
阅读全文
摘要:模板模式是一种行为设计模式,它允许将算法的结构与实现分开,从而使得实现可以在不改变算法结构的情况下被重用。模板模式的核心思想是定义一个抽象基类,其中包含了算法的骨架,但是具体的步骤延迟到子类中去实现。这样一来,同一套算法的不同实现可以共享同一个基类代码,从而避免了代码的重复。简单来说,就是抽象类!
阅读全文
摘要:迭代器模式主要用于遍历集合类中的元素,让我们能够更方便地访问和操作集合中的每一个元素。Java内部集合就实现了迭代器模式。 > 示例代码:使用ArrayList中的iterator ```java import java.util.ArrayList; import java.util.Iterat
阅读全文
摘要:外观模式是一种结构型设计模式,它为复杂子系统提供了一个统一的接口,从而使其更易于使用。外观模式隐藏了子系统的复杂性,并将其封装在一个高级接口中。在使用外观模式时,客户端只需要与外观对象进行交互,而不需要直接与子系统中的各个组件交互。 ```java // 子系统中的组件 class CPU { pu
阅读全文
摘要:代理模式是一种常见的设计模式,它允许一个对象在不改变其行为的情况下,控制对另一个对象的访问。代理模式通常用于保护敏感对象,或者为了延迟实际对象的加载。 在Java中,代理模式有两种形式:静态代理和动态代理。静态代理需要手动编写代理类,而动态代理则可以在运行时自动生成代理类。 > 示例代码:__静态代
阅读全文
摘要:当我们需要将一个类的接口转换成客户端所期望的另一个接口时,就可以使用适配器模式。适配器模式可以让原本不兼容的类能够协同工作。 在适配器模式中,适配器作为一个中间层,将一个或多个类的接口转换成客户端所期望的接口。这样,客户端就可以通过适配器来调用原本不兼容的类,而无需修改客户端的代码。 适配器模式分为
阅读全文
摘要:当我们需要处理树形结构数据时,组合模式(Composite Pattern)就会变得非常有用。组合模式允许我们将对象组合成树形结构来表示“整体/部分”的层次结构,使得客户端可以统一地处理单个对象和组合对象。 在组合模式中,我们通常会定义一个抽象类或者接口来表示对象,可能会包含添加、删除、遍历子对象等
阅读全文
摘要:当我们想要在不改变原有对象的结构和功能的基础上,动态地给一个对象添加一些额外的行为或职责时,可以使用装饰器模式。 在装饰器模式中,通常会定义一个抽象装饰器类和具体的装饰器类。抽象装饰器类和被装饰对象实现同样的接口,而具体的装饰器类则包含了一个指向被装饰对象的引用,并且在其基础上增加了额外的行为或职责
阅读全文
摘要:命令模式是一种行为型设计模式,它允许将请求封装成对象,从而使您能够将不同的请求发送到队列或日志中,以及支持可撤销的操作。 > 示例代码 ```java //定义命令接口 public interface Command { void execute(); } //具体命令 public class
阅读全文
摘要:访问者模式是Java中的一种行为型设计模式,它允许你定义在不改变被访问对象(如类、接口等)结构的前提下,对其内部的元素访问和操作。该模式适用于需要对一个复杂对象结构(如代码中的类层次结构)进行多种不同操作的场景。 > 示例代码 ```java // 定义被访问者接口 interface Elemen
阅读全文
摘要:观察者模式是一种行为设计模式,它允许对象在发生特定事件时通知其他对象。这些被通知的对象被称为观察者,而通知它们的对象称为主题或可观察对象。该模式使用了松散耦合的原则,因此主题和观察者之间没有太多的依赖关系。 > 示例代码: ```java import java.util.ArrayList; im
阅读全文
摘要:在不使用状态模式之前,我们经常通过 ```java if(state1) { // do state1 something } else if(state2) { // do state2 something } else { // do other something } ``` 在状态设计模式中
阅读全文
摘要:策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在策略模式中,我们定义了多个算法,并将每个算法封装在一个独立的类中(__策略类__),以便在运行时根据需要进行切换。这使得算法与调用其算法的客户端代码分离,从而实现了更高的灵活性和可维护性。 主要实现方式:1 策略接口 -> n * 具体策略
阅读全文
摘要:解释器模式是一种行为型设计模式,它定义了一种语言并解析该语言中的表达式。这种模式用于将一个表达式文法表示成一个抽象语法树,从而使得我们可以通过对语法树进行遍历来解释整个表达式。 在解释器模式中,包含以下几个角色: - 抽象表达式(AbstractExpression):定义了一个抽象的解释操作,具体
阅读全文