自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 设计模式(21)-策略模式及实现

提供了一种定义一系列算法的方法,将这些算法封装成独立的策略类,并使它们可以相互替换。在客户端中,创建一个上下文(Context)对象,该对象包含一个对策略类的引用,通过该引用调用相应的策略方法。这样,客户端可以在运行时选择不同的策略,而不需要修改上下文类。策略模式也可能导致类的数量增加,因为每个算法都需要一个对应的策略类。在使用策略模式时,需要权衡类的数量与灵活性之间的关系。它提高了代码的可维护性和扩展性,因为新的策略可以很容易地添加到系统中。实现策略接口,提供具体的算法实现。

2024-06-29 22:39:24 204

原创 设计模式(20)-观察者模式及实现

核心思想是定义一种一对多的依赖关系,使得一个主题(通常称为被观察者)可以同时维护多个观察者,并在其状态改变时自动通知所有观察者。这样,观察者无需关心主题的内部实现细节,而只需要关心主题的状态变化。在实现中,通常会定义一个抽象的主题类和一个抽象的观察者类,具体的主题和观察者类会继承这些抽象类并实现相应的方法。● 可扩展性:可以方便地增加新的观察者,而不会影响到已有的观察者和主题。存储与主题相关的状态,当接收到主题的更新通知时,更新自己的状态。维护当前状态,当状态改变时,给所有注册过的观察者发送通知。

2024-06-27 10:25:00 333

原创 设计模式(19)-备忘录模式及实现

备忘录模式使得对象的状态管理更加灵活。它允许对象在不暴露其内部结构的情况下进行状态的保存和恢复。这有助于实现撤销和重做功能,以及历史记录和快照功能。通过引入“备忘录”对象,允许在不暴露对象内部结构的情况下,捕获并存储对象的状态。同时,它还提供了一种将对象恢复到之前状态的方式。使用备忘录模式可能会增加一些内存开销,特别是如果需要存储大量的状态历史。负责创建一个备忘录,记录当前状态,并可以恢复到先前的状态。负责存储发起人的内部状态,并可以防止其他对象对其修改。负责保存备忘录,但不检查备忘录的内容。

2024-06-27 10:24:20 193

原创 设计模式(18)-迭代器模式及实现

提供了一种统一的方法来遍历不同类型的集合,而无需暴露集合内部的表示细节。迭代器负责遍历集合并提供统一的访问接口,而集合负责实际存储元素。● 优点:迭代器模式将遍历操作封装在迭代器中,使客户端代码更加简洁、可读,并且降低了与集合的耦合。● 权衡:迭代器模式可能会增加一些额外的类和接口,可能会稍微增加复杂性,但从长远来看,可以提高代码的可维护性和可扩展性。实现迭代器接口,跟踪当前遍历的位置,并实现迭代器接口中的所有方法。实现聚合接口,返回一个具体迭代器的实例,用于遍历具体聚合对象。定义了创建迭代器对象的接口。

2024-06-26 23:44:53 371

原创 设计模式(17)-中介者模式及实现

引入了一个中介者对象,它负责协调和管理对象之间的通信。● 降低耦合度:对象之间的通信逻辑被集中在中介者中,从而降低了对象之间的直接依赖,减少了耦合度,使系统更加灵活和可维护。● 集中管理:所有对象的交互逻辑都集中在中介者中,使得系统的交互逻辑更加清晰可见,便于管理和修改。● 可扩展性:通过增加或修改中介者对象,可以相对容易地扩展系统,而不需要修改对象之间的通信逻辑。● 复用性:中介者模式将交互逻辑与对象本身的业务逻辑分离,可以更容易地复用这些交互逻辑。实现了中介者接口,协调各个同事对象之间的交互。

2024-06-24 23:42:48 286

原创 设计模式(16)-命令模式及实现

命令模式的效果在于解耦命令的发送者和接收者,从而支持更灵活的代码组织。它允许您轻松地添加新的命令,排队命令,记录命令历史,甚至实现撤消和重做功能。命令模式提供了一种将请求封装成对象的方法,使得请求的发送者与请求的接收者之间不直接耦合。命令模式也可能引入一些复杂性,因为您需要为每个操作创建一个具体命令类。要求该命令被执行,它通常对命令对象进行参数化,然后执行该命令。实现命令接口,对应于具体的行为和接收者。知道如何实施与执行一个请求相关的操作。定义命令的接口,声明执行操作的方法。

2024-06-23 08:52:21 158

原创 设计模式(15)-责任链模式及实现

每个处理对象都包含一个对下一个处理对象的引用,形成一个链式结构。当一个请求到达时,它首先被传递给链中的第一个处理对象,如果该对象不能处理该请求,它会将请求传递给下一个处理对象,依此类推,直到找到能够处理请求的对象为止。实现了处理者接口,负责处理它所负责的请求,并且决定是否将请求传递给链中的下一个处理者。● 灵活性:可以根据需要动态地改变处理链中处理者的顺序,以及每个处理者的职责。● 可维护性:每个处理者关注单一的责任,使得代码更易于理解和维护。定义了处理请求的接口,所有具体处理者都实现这个接口。

2024-06-22 22:56:14 246

原创 设计模式(14)-模板方法模式及实现

通过定义一个抽象的父类,其中包含了算法的核心结构,但某些步骤使用抽象方法或受保护的虚拟方法来表示,这些方法由子类来实现。它提供了一个或多个抽象方法供子类实现,同时提供一个模板方法来定义算法的骨架。● 灵活性: 子类可以通过实现特定的步骤来定制算法的行为,而不需要改变算法的整体结构。● 代码复用: 核心算法结构在父类中定义,可以被多个子类共享,避免了重复的代码。● 代码一致性: 所有子类共享相同的算法模板,确保了算法的一致性。实现了抽象类中的抽象方法,具体化了算法的各个步骤。

2024-06-22 22:55:56 362

原创 设计模式(13)-解释器模式及实现

通过定义一种语言文法的表示,并提供一种解释器来解释这种语言的语句。这样,你可以将语句表示为抽象语法树,然后通过解释器逐步执行和解释这个语法树。解释器模式可能导致类的数量增加,因为每个语法规则都需要一个相应的表达式类。也实现了抽象表达式,用于表示文法中的非终结符。可以使你更容易地实现特定语言的解释和执行,尤其在处理自定义的领域特定语言时非常有用。实现了抽象表达式,用于表示文法中的终结符。包含解释器之外的全局信息,可以为解释器提供解释文法所需的外部数据。定义了解释器的接口,规定如何解释文法中的各个元素。

2024-06-21 20:06:16 152

原创 设计模式(12)-代理模式及实现

提供了一个代理对象,它充当了原始对象的替代品,以控制对原始对象的访问。● 虚拟代理(Virtual Proxy): 当创建原始对象需要大量资源时,代理对象可以充当一个轻量级的替代品,延迟原始对象的实际创建和初始化,从而提高性能。● 远程代理(Remote Proxy): 代理对象可以隐藏原始对象存在于远程服务器上的事实,使得客户端可以透明地访问远程对象。● 保护代理(Protection Proxy): 代理对象可以控制对原始对象的访问权限,确保只有具有特定权限的客户端可以访问原始对象。

2024-06-20 00:16:12 235

原创 设计模式(11)-享元模式及实现

当需要一个对象时,工厂会检查是否已经有相同内部状态的对象存在,如果存在则返回已有的对象,否则创建一个新的对象并将其添加到内部对象池中。它确保不会创建重复的享元对象,并且当客户端请求享元对象时,工厂会提供一个已经存在的对象或者创建一个新的对象。共享对象的状态,以减少内存和资源的消耗。● 限制:享元模式适用于对象的内部状态相对稳定,而外部状态会变化的情况。享元对象包含内部状态,这些状态是不变的,并且可以在多个对象之间共享。客户端通过享元工厂来获取所需的享元对象,并提供外部状态,以便享元对象能够执行特定的操作。

2024-06-20 00:15:57 300

原创 设计模式(10)-外观模式及实现

通过引入一个外观类(Facade),将复杂的子系统接口进行封装,为客户端提供一个简单的高层接口。外观类充当了客户端与子系统之间的中间人,处理客户端的请求并将其转发给适当的子系统。外观模式并不在系统中添加新功能,它只是提供了一个更简洁的接口,以简化客户端的操作。● 提高可维护性:由于外观模式将子系统封装起来,修改子系统的实现不会影响客户端代码,从而提高了系统的可维护性。● 支持松散耦合:外观模式可以帮助系统中的不同模块之间实现松散耦合,从而支持模块的独立开发和测试。

2024-06-19 09:56:25 293

原创 设计模式(9)-装饰模式及实现

装饰类具有与原始类相同的接口,它内部包含一个指向原始对象的引用,并且可以根据需要包装额外的功能。装饰模式的优点包括避免了类爆炸问题,因为你可以通过组合少量的装饰类来实现各种功能组合。3、Decorator(抽象装饰者):抽象类,实现Component接口,并持有Component接口的一个实例。4、ConcreteDecorator(具体装饰者):具体实现Decorator类,添加具体的职责。2、ConcreteComponent(具体组件):实现Component接口的具体类。

2024-06-18 22:26:24 117

原创 设计模式(8)-组合模式及实现

组合模式通过定义一个共同的抽象类或接口来表示单个对象和对象组合,从而实现了透明的处理。● 可能限制操作: 组合模式可能会限制某些特定对象的操作,因为共同的抽象接口可能无法涵盖所有可能的操作。● 简化客户端代码: 客户端不需要判断操作的对象是单个对象还是对象组合,从而简化了客户端的代码。3、容器(Composite):实现组件接口,同时包含子节点的类,可以包含叶节点或其他容器节点。● 透明性: 使用组合模式,客户端可以一致地对待单个对象和对象组合,无需关心具体对象的类型。

2024-06-17 09:29:37 410

原创 设计模式(7)-桥接模式及实现

在桥接模式中,通过创建一个桥接接口(或抽象类),其中包含一个指向具体实现的引用,将抽象部分和具体部分连接起来。这样,抽象部分和具体部分可以独立地进行扩展,而不会相互影响。它允许抽象部分和具体部分独立变化,避免了类层次结构的爆炸式增长。2、扩展抽象(Refined Abstraction): 扩展了抽象类,添加了具体的行为。1、抽象(Abstraction): 定义了客户端使用的接口,它保持了对扩展对象的引用。4、具体实现(Concrete Implementor): 实现了实现类接口的具体类。

2024-06-16 23:28:48 273

原创 IDEA项目上传gitee

点击Define remote输入对应gitee仓库的URL。再次点击Push就可以上传到gitee仓库了。创建完成后,在项目路径中就会出现.git。2、接着将本地项目提交到远程仓库。首先准备好一个gitee仓库。首先选择指定的文件提交到仓库。接着push到远程仓库上去。1、首先创建本地仓库。

2024-06-15 14:53:47 253

原创 设计模式(6)-适配器模式及实现

通过引入一个适配器类来充当中间人,将一个接口转换成另一个接口,使得两个不兼容的对象能够协同工作。适配器类包含一个对不兼容接口的引用,并实现了你期望的目标接口。这样,当你需要使用目标接口的时候,可以通过适配器来调用原本不兼容的类的方法。适配器模式的应用可以使得现有的代码与新代码能够无缝协同工作,从而提高了代码的可重用性。3、Adapter(适配器):通过在内部包装一个Adaptee对象,把源接口转换成目标接口。1、Target(目标接口):定义客户端使用的特定领域相关的接口。

2024-06-15 09:59:30 203

原创 设计模式(5)-单例模式及实现

确保一个类只能创建一个实例,并提供一个静态方法或静态属性来访问这个实例。通常,单例类会将自己的构造函数声明为私有,以防止外部代码直接创建实例。通过一个静态方法,单例类可以控制在运行时只能获得同一个实例。可以确保在整个应用程序中只有一个实例存在,从而节省了资源和内存。它也可以提供一个全局的访问点,使得代码中的各个部分都可以方便地获取这个实例。在多线程环境下需要小心处理,以确保线程安全。懒汉:方式简单,但不是线程安全的,如果在多线程环境下使用,可能会创建多个实例。饿汉:在类加载时就创建实例,是线程安全的。

2024-06-14 16:19:06 143

原创 异或交换两数和中间变量temp交换两数对比

对比使用异或交换数组中两个数据和使用中间变量temp交换两数。

2024-06-13 21:03:12 236

原创 设计模式(4)-原型模式及实现

核心概念是在原型对象的基础上进行克隆,使得新对象具有与原型相同的初始状态。如果对象内部包含其他对象的引用,可能需要实现深克隆来复制整个对象结构。2、具体原型类(Concrete Prototype):实现原型接口,并实现克隆操作,返回对象的一个副本。● 避免与具体类耦合:客户端可以通过克隆方法创建新对象,而无需知道具体类的细节,降低了耦合度。● 克隆方法的实现:某些对象可能不容易进行克隆,特别是涉及到文件、网络连接等资源的情况。● 减少对象创建的成本:避免了复杂对象的重复初始化过程,提高了创建对象的效率。

2024-06-12 10:35:09 150

原创 设计模式(3)-建造者模式及实现

4、Director(指挥者):负责构建对象的步骤,使用Builder接口来创建对象,不依赖于具体建造者的实现。● 分离构建过程和表示:通过建造者模式,可以将复杂对象的构建过程与其最终表示分离,使得构建过程更加清晰可控。● 更好的可扩展性:如果需要添加新的产品变体,只需创建一个新的具体建造者即可,而无需修改已有的代码。● 支持不同的表示:通过使用不同的具体建造者,可以创建不同的产品表示,而不改变客户端的代码。1、Builder(建造者):定义创建复杂对象的接口,通常包含创建对象的各个部分的步骤。

2024-06-11 08:51:05 276

原创 设计模式(2)-抽象工厂模式及实现

● 松耦合:客户端代码不需要直接依赖于具体产品,只需要通过抽象工厂接口创建产品,从而降低了代码的耦合度。● 可扩展性:增加新的产品族或产品变得相对容易,只需要添加新的具体工厂和产品类即可,不需要修改现有代码。● 产品族一致性:抽象工厂确保创建的产品是一组相关的产品族,保证了这些产品之间的一致性。2、具体工厂(Concrete Factory):实现抽象工厂的接口,生成具体的产品。4、具体产品(Concrete Product):实现抽象产品的接口,具体实现产品类。

2024-06-10 13:48:27 301

原创 设计模式(1)-工厂模式及实现

这样,客户端代码不需要知道要创建的具体对象的类,只需要通过工厂方法来创建对象。每个具体的子类都可以根据需要创建不同类型的对象,而客户端代码只需要通过抽象工厂类来调用工厂方法,而不需要关心具体的对象创建细节。工厂模式是软件设计模式中的一种,属于创建型模式,它使用一个工厂方法来处理对象的创建。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

2024-06-09 10:20:13 219

原创 设计模式概念

设计模式的分类、基本概念和特点

2024-06-08 15:25:13 863

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除