Java的23种设计模式
Java的设计模式主要来源于经典的《设计模式:可复用面向对象软件的基础》一书,其中介绍了23种设计模式,这些模式被分为三大类:创建型模式、结构型模式和行为型模式。
与该标签相关的项目与笔记。
Java的设计模式主要来源于经典的《设计模式:可复用面向对象软件的基础》一书,其中介绍了23种设计模式,这些模式被分为三大类:创建型模式、结构型模式和行为型模式。
解释器模式是一种行为设计模式,它定义了一种方法来解释特定语言中的句子。这种模式可以用于构建一个解释器,该解释器能解释或处理任何遵循特定语法的输入语句。在软件开发中,当存在一个语言需要解释执行,并且该语言的文法规则可以被表示为一个抽象语法树时,解释器模式尤为有用。
备忘录模式是一种行为设计模式,它提供了一种在不破坏封装性的前提下,捕获并外部化对象内部状态的能力。这样一来,对象可以在将来某个时刻恢复到之前的状态。这种模式非常适合需要实现撤销操作的场景,比如文本编辑器的撤销功能、游戏的存档与读档等。
访问者模式是一种行为设计模式,它表示一个作用于某对象结构中的各个元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。这种模式适用于数据结构相对稳定,但其操作或算法需要经常变化的情况。
迭代器模式是一种行为设计模式,它提供了一种访问集合对象元素的方式,而无需暴露集合的内部结构。这种模式支持以统一的方式遍历不同类型的集合,使得集合的使用者不需要关心集合的具体实现,从而提高了代码的灵活性和可重用性。
中介者模式是一种行为设计模式,它通过引入一个中介角色来封装多个对象之间的交互关系,从而降低这些对象之间的耦合度。这种模式让对象之间不需要显式地相互引用,而是通过中介者进行间接通信,这有利于系统的解耦、扩展和维护。
责任链模式是一种行为设计模式,它定义了一个对象链,这些对象都有机会处理请求。这种模式让多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合。每个对象都可以决定自己是否要处理请求,如果需要处理就处理,否则就将请求传递给链中的下一个对象。这个过程会一直持续,直到请求被处理或者链中的最后一个…
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使得可以用不同的请求、队列请求或者日志请求来参数化其他对象。简单来说,命令模式通过将操作封装在命令对象中,实现了请求发送者和请求接收者的解耦,使得系统更加灵活和可扩展。
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变它的行为。对象看起来似乎修改了它的类。这种模式主要用于当一个对象的行为依赖于它的状态,并且它必须在运行时根据状态改变它的行为。
观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件处理系统、实时更新用户界面以及在分布式环境中传递消息等场景。
模板方法模式是一种行为设计模式,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中实现。模板方法使得子类可以重定义某些步骤,而不改变算法的结构。这种模式是基于“好莱坞原则”(Don't Call Us, We'll Call You),即父类控制子类的行为,而不是子类主动调用父类的方法。
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。
享元模式是一种结构型设计模式,主要用于通过共享技术实现大量细粒度对象的高效复用。它的核心思想在于,对于那些具有相同或相似状态的对象,不必为每个实例创建新的内存空间,而是通过共享已存在的对象来减少内存占用并提升性能。这种模式特别适用于系统中存在大量相似对象,且这些对象大部分状态都可以外部化的情况。
组合模式是一种对象结构型设计模式,它允许你将一组对象以树形结构组织起来,从而使这些对象可以被整体或个别地对待。这种模式通过定义包含基本对象和组合对象的类层次结构,提供了一种统一的方式来处理单个对象和对象组合,使得客户端代码可以一致地操作它们,而无需关心它们是单个对象还是组合。
桥接模式是一种结构型设计模式,它通过将抽象部分与其实现部分分离,使得两者可以独立地变化。这种模式能够有效应对多维度变化的需求,让系统更加灵活且易于扩展。桥接模式的关键在于定义一个接口(抽象),用来连接两个独立的层次结构:一个是抽象的,另一个是实现的。这样,当实现部分需要变化或者增加新的实现时,不会影…
外观模式是一种结构型设计模式,它通过提供一个统一的接口来封装一组复杂子系统的内部细节,使子系统更容易被外界使用。这种模式如同为复杂的系统构建了一个简单的外观或接口,隐藏了系统内部的复杂性,并降低了客户与子系统之间的耦合度。
代理模式是软件工程中一种常用的设计模式,属于结构型设计模式的一种。该模式通过提供一个代理对象来控制对真实对象的访问,从而实现诸如延迟初始化、访问控制、增加额外功能或减少客户与真实对象之间的耦合度等目的。代理模式的核心思想在于“代劳”,即客户端不是直接与目标对象交互,而是通过代理对象这个中介来进行。
装饰器模式作为一种广泛应用于软件工程领域的设计模式,其核心在于通过一种灵活的方式为对象增添新的职责,而无需修改对象的结构。这一模式不仅提高了代码的复用性和灵活性,还确保了遵循面向对象设计原则中的“开闭原则”——即对扩展开放,对修改关闭。
适配器模式,属于结构型设计模式之一,其核心思想是将一个接口转换成客户希望的另一个接口,使得原本不兼容的接口可以协同工作。这种模式在需要使用现有类,但其接口不符合需求时特别有用。通过适配器,我们可以创建一个包装类,该类持有被适配对象的引用,并提供客户所期待的接口。
原型模式是一种创建型设计模式,它允许创建对象的副本,而无需了解其具体的类。这种模式通过克隆现有的实例来获取新的对象,而不是通过构造函数新建对象。这样可以有效避免复杂的初始化过程,提高对象创建的效率,特别是在创建类似对象时能显著减少系统开销。