
设计模式
文章平均质量分 95
设计模式
一碗油泼面
没有什么事是一碗油泼面解决不了的,如果有那就两碗...
展开
-
设计模式-访问者模式(Visitor)
访问者模式(Visitor Pattern)是一种将算法与对象结构分离的软件设计模式。它的基本思想是让访问者对象能够遍历一个或多个被访问对象,并根据需要对它们执行操作。在访问者模式中,被访问对象通常有一个接受访问者的方法,该方法接受一个访问者对象作为参数。访问者对象则定义了一个用于访问被访问对象的接口,该接口包含一组方法,每个方法对应于被访问对象的一个操作。1、将被访问对象和访问者解耦,使得它们可以独立地变化而不影响彼此;2、支持递归遍历,使得访问者可以处理复杂的数据结构;3。原创 2023-11-16 07:00:00 · 1307 阅读 · 0 评论 -
设计模式-模板方法模式(Template Method)
模板方法模式,也被称为模板模式,是一种行为型设计模式。它在一个抽象类中公开定义了执行其方法的模板,规定了算法的骨架。其主要特点是将一些步骤延迟到子类中,这些子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式主要解决了一些通用的方法在每一个子类都重新写了这一问题,其主要目的是将这些通用算法抽象出来。通过使用模板方法模式,子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。原创 2023-11-15 07:00:00 · 2434 阅读 · 0 评论 -
设计模式-策略模式(Strategy)
策略模式是一种行为型设计模式,它定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换或独立于使用它的客户而变化。这种类型的设计模式属于行为型模式。当在处理一项业务时,如果有多种处理方式,并且需要再运行时决定使用哪一种具体实现,就会使用策略模式。策略模式的主要组成部分包括抽象策略(Strategy)类、具体策略(Concrete Strategy)类和环境(Context)类。抽象策略类是策略接口,定义了所有支持的算法;具体策略类是实现了抽象策略接口的类,表示每种具体的算法;原创 2023-11-15 07:00:00 · 3384 阅读 · 0 评论 -
设计模式-状态模式(State)
Java中的状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为。这种模式主要用于实现对象之间的解耦,使得对象可以在不修改其结构的情况下改变其行为。Java中的状态模式通常包括以下角色:上下文(Context):负责维护当前状态和根据当前状态调用相应的状态处理方法。状态(State):表示对象的状态,每个状态都有一个对应的处理方法。具体状态(Concrete State):是状态的具体实现,继承自状态接口。原创 2023-11-14 07:00:00 · 1677 阅读 · 0 评论 -
设计模式-观察者模式(Observer)
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式包含以下角色:主题(Subject):被观察的对象,维护一个观察者列表,提供添加、删除和通知观察者的方法。观察者(Observer):观察主题对象的状态变化,实现 Update 方法来更新自己的状态。原创 2023-11-14 07:00:00 · 4876 阅读 · 0 评论 -
设计模式-备忘录模式(Memento)
备忘录模式(Memento Pattern)是一种行为型设计模式,它允许你捕获对象的内部状态,并在需要时恢复该状态,而无需暴露该对象的实现细节。所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样,以后就可以将该对象恢复到原先保存的状态。这种模式的名字可能对一些人来说稍微有点陌生,但其另一个名字快照模式可能会让人觉得更为熟悉。备忘录模式的适用场景包括:需要保存和恢复数据的场景,例如,编辑文档时需要撤销操作;需要避免重复计算的场景,例如,斐波那契数列;原创 2023-11-13 11:23:43 · 1627 阅读 · 0 评论 -
设计模式-中介者模式(Mediator)
中介者模式,又被称为调停者模式,是一种行为型设计模式,其核心思想是通过引入一个中介对象来封装一系列对象之间的交互。这种模式使得各对象不需要显式地相互引用,从而降低了它们之间的耦合度和依赖性,使得系统更易于维护和扩展。中介者模式的主要角色包括:抽象中介者(Mediator):定义中介者接口,声明各种业务方法。具体中介者(Concrete Mediator):实现抽象中介者接口,负责与各个同事对象之间的通信和协调。原创 2023-11-13 19:00:00 · 1184 阅读 · 0 评论 -
设计模式-迭代器模式(Iterator)
迭代器模式是一种设计模式,它用于提供一种方法来访问一个容器对象中的各个元素,而又不暴露该对象的内部表示。在迭代器模式中,我们定义一个抽象的迭代器类,它包含两个方法:一个是hasNext()方法,用于判断是否还有下一个元素;另一个是next()方法,用于获取下一个元素。然后,每个容器类都实现自己的迭代器类,以访问容器中的元素。原创 2023-11-11 07:00:00 · 1871 阅读 · 0 评论 -
设计模式-解释器模式(Interpreter)
解释器模式是一种行为设计模式,它将一个表达式转化为一个由其他对象组成的树形结构,然后通过遍历该树来求解表达式的值。在解释器模式中,通常会定义一个抽象的解释器类,该类包含一个解析表达式的方法和一个计算表达式值的方法。具体的解释器类则实现了抽象解释器类中的解析和计算方法,用于处理不同类型的表达式。使用解释器模式的好处是可以将表达式的解析和计算分离开来,使得表达式的语法和语义可以独立修改。同时,由于表达式被转化为了树形结构,因此可以很容易地实现一些复杂的表达式操作,如递归、循环等。原创 2023-11-11 07:00:00 · 919 阅读 · 0 评论 -
设计模式-命令模式(Command)
命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。命令模式的主要优点是可以将请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。原创 2023-11-10 07:00:00 · 2046 阅读 · 3 评论 -
设计模式-责任链模式(Chain of Responsibility)
责任链模式是一种面向对象设计模式,该模式中包含了一系列处理对象和命令对象。每个处理对象都有能力决定自己可以处理哪些命令对象,如果遇到无法处理的命令对象,它会将请求传递给下一个处理对象。这种模式的核心在于避免请求发送者与接收者之间的紧密耦合,让多个对象都有可能接收请求,并将这些对象连接成一条链,沿着这条链传递请求,直到有对象处理它为止。以公司员工请假为例,员工的请假请求可能有多个领导可以批准,但每个领导的批准权限不同。员工需要根据自己要请假的天数去找对应的领导签名。这就是责任链模式的一个生动实例。原创 2023-11-10 07:00:00 · 7955 阅读 · 0 评论 -
设计模式-代理模式(Proxy)
代理模式是一种设计模式,它为其他对象提供一个代理以控制对这个对象的访问。代理模式的主要目的是在不修改原始类的情况下,增加额外的功能。代理模式分为静态代理和动态代理两种。静态代理:在编译时确定代理类,代理类与目标类实现相同的接口。动态代理:在运行时动态生成代理类,代理类实现了InvocationHandler接口。原创 2023-11-09 07:00:00 · 288 阅读 · 0 评论 -
设计模式-享元模式(Flyweight)
享元模式,也称为Flyweight Pattern,是一种结构型设计模式,主要用于减少创建对象的数量以降低内存占用和提升性能。这种类型的设计模式尝试重用已有的同类对象,当没有找到匹配的对象时,才会创建新的对象。享元模式的主要组成部分包括享元工厂、抽象享元和具体享元类。享元工厂负责创建和管理具体的享元对象,当请求对象已经存在时,直接返回该对象;当不存在时,就创建一个新的对象。抽象享元定义了需要共享的对象的业务接口,而具体享元则实现了抽象享元类的接口,完成了特定的业务逻辑。原创 2023-11-09 07:00:00 · 409 阅读 · 0 评论 -
设计模式-外观模式(Facade)
外观模式(Facade Pattern)是一种结构型设计模式,这种模式通过为多个复杂的子系统提供一个一致的接口,来隐藏系统的复杂性,从而使得这些子系统更加容易被访问。该模式的主要意图是为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,使得这一子系统更加容易使用。外观模式在日常开发中是经常被使用的一种设计模式,它通过引入一个外观角色,简化了客户端与子系统之间的交互关系,为复杂的子系统调用提供一个统一的入口,降低了客户端的使用难度。原创 2023-11-08 11:26:20 · 2664 阅读 · 0 评论 -
设计模式-装饰器模式(Decorator)
装饰器模式是一种结构型设计模式,它允许在运行时扩展一个对象的功能,而不需要改变其现有结构。这种模式的核心思想是通过创建一个包装类(装饰器)来动态地增强或修改原有对象的行为。1、不改变原有对象的结构和方法。2、通过创建一个与被装饰对象接口相同的装饰器类,实现对被装饰对象的包装。3、可以在不改变现有代码的基础上,动态地给一个对象增加新的功能。4、装饰器模式是继承的一个补充,提供了比继承更加灵活的方式来扩展对象的行为。原创 2023-11-08 11:02:55 · 992 阅读 · 0 评论 -
设计模式-组合模式(Composite)
组合模式(Composite Pattern),也被称为部分-整体模式、合成模式或对象树,是一种结构型设计模式。这种模式将一组具有相似功能的对象视为一个单一的对象,使得客户可以以统一的方式处理单个对象和组合对象。该模式依据树形结构来组合对象,用来表示部分以及整体层次。在特定的应用场景下,如需要表示的功能的结构可以被抽象成树状结构时,就非常适合使用组合模式。例如,在一个模拟的公司架构中,公司被视为一个整体,它下面可以设有行政部门和IT部门,而这些部门又可以有自己的下属部门。原创 2023-11-07 10:38:22 · 1569 阅读 · 0 评论 -
设计模式-桥接模式(Bridge)
桥接模式,也被称为柄体(Handle and Body)模式或接口(Interface)模式,是一种桥接模式,也被称为柄体(Handle and Body)模式或接口(Interface)模式,是一种结构型设计模式。它的主要目的是将抽象部分与它的实现部分分离,使它们都可以独立地变化。这种分离可以通过组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。举个例子,假设有一个几何形状Shape类,从它能扩展出两个子类:圆形Circle和方形Square。原创 2023-11-07 09:14:36 · 5542 阅读 · 2 评论 -
设计模式-适配器模式(Adapter)
适配器模式(Adapter Pattern)是一种结构型设计模式,它主要用于解决两个不兼容的接口之间的问题。这种模式通过结合两个独立接口的功能,使原本不能一起工作的那些类可以一起工作。适配器模式涉及到一个单一的类,这个类负责将独立的或不兼容的接口功能整合到一起。举个例子,读卡器就是作为内存卡和笔记本之间的适配器。我们先把内存卡插入读卡器,再把读卡器插入笔记本,然后就可以通过笔记本来读取内存卡的内容了。原创 2023-11-06 15:11:56 · 4366 阅读 · 1 评论 -
设计模式-建造者模式(Builder)
建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。使用多个简单的对象一步一步构建成一个复杂的对象。建造者模式关注如何逐步创建一个复杂的对象,不同的建造者定义了不同的创建过程,且具体建造者相互独立,且更换建造者和增加建造者非常的方便。原创 2023-11-06 14:18:05 · 400 阅读 · 0 评论 -
设计模式-工厂方法模式(Factory Method)
工厂模式(Factory Pattern)是Java中最常用的设计模式之一,属于创建型模式。这种模式提供了一种将对象的实例化过程封装在工厂类中的方式,用于封装和管理对象的创建。工厂模式包括三种不同的形式:简单工厂模式、工厂方法模式和抽象工厂模式。这三种模式在形式和特点上是极为相似的,都是为了更好地解耦。简单工厂模式是一种最简单的工厂模式,它提供了一个创建对象的最佳方式;工厂方法模式是一种将对象的实例化过程延迟到子类中进行的模式;抽象工厂模式是一种将创建一套产品族的操作交给一个工厂处理的模式。原创 2023-11-03 18:40:05 · 511 阅读 · 0 评论 -
设计模式-单例模式(Singleton)
Java 单例模式(Singleton)是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式通常用于需要频繁创建和销毁的对象,例如数据库连接、线程池等。原创 2023-11-03 10:37:12 · 1236 阅读 · 0 评论 -
设计模式-原型模式
原型模式 (Prototype Pattern) 是一种对象创建型设计模式,这种模式主要是通过克隆已存在的对象来创建新的对象。在原型模式中,一个对象可以再创建另外一个可定制的对象,而无需知道任何关于对象创建的具体细节。原型模式的基本原理是:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝原型自己来实现创建过程。这样,我们就可以在运行时不需要知道具体的类,只需知道一个实例。1、Prototype(抽象原型类):这是所有具体原型类的基类,通常定义了复制方法。2。原创 2019-08-10 10:19:50 · 230 阅读 · 2 评论