![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 82
放码过来_
这个作者很懒,什么都没留下…
展开
-
探索Java设计模式:代理模式
代理模式的核心思想是为一个对象(即“目标对象”或“被代理对象”)提供一个替代者(即“代理对象”),代理对象与目标对象具有相同的接口。客户端通过代理对象间接与目标对象交互,代理对象可以在执行目标对象方法前、后或过程中添加额外操作,如权限校验、缓存处理、异常处理等。Subject(抽象主题):定义目标对象和代理对象的共同接口,客户端通过该接口与两者交互。RealSubject(真实主题):实现了Subject接口,定义了实际业务逻辑。Proxy(代理)原创 2024-05-02 23:26:59 · 374 阅读 · 0 评论 -
探索Java设计模式:迭代器模式
迭代器模式的核心思想是为聚合对象(如集合、数组)提供一个标准的访问接口,该接口定义了遍历和访问元素的通用方法。通过迭代器,客户端可以无须关心聚合对象的内部结构,以一致的方式遍历集合中的元素。迭代器模式将遍历算法与聚合对象分离,使得它们可以独立变化。Aggregate(聚合):定义了创建迭代器对象的接口。ConcreteAggregate(具体聚合):实现了创建迭代器对象的接口,提供了创建迭代器实例的方法。Iterator(迭代器):定义了访问和遍历元素的接口,包含hasNext()next()等方法。原创 2024-05-02 23:26:10 · 510 阅读 · 0 评论 -
探索Java设计模式:访问者模式
总结来说,访问者模式通过分离数据结构和操作,使得二者可以独立变化,为系统提供了良好的扩展性和灵活性。在实际开发中,应识别出具有多种不同操作且易于形成“访问者-元素”关系的数据结构,适时地运用访问者模式进行设计,以提升代码的可读性、可维护性和扩展性。在访问者模式中,数据结构(也称为元素集合)提供了接受访问者访问的接口,访问者则定义了对每个元素的操作。访问者模式的核心思想是“你不用管我怎么操作,我只关心我要访问的对象”,这使得我们可以为不同类型的数据结构提供不同的访问者,从而实现对同一数据结构的不同操作。原创 2024-04-27 13:25:51 · 257 阅读 · 0 评论 -
探索Java设计模式:工厂方法模式
*工厂方法模式(Factory Method Pattern)**是一种创建型设计模式,其核心思想是定义一个用于创建对象的接口,但让子类决定实例化哪个类。工厂方法模式将对象的实例化过程推迟到子类中,使得系统可以在不修改原有代码的情况下扩展新的产品类型。解耦:将对象的创建与使用分离,使用者无需关心对象的具体创建过程,只需与抽象工厂接口交互,降低了代码之间的耦合度。灵活性与扩展性:新增产品类型时,只需增加一个新的具体工厂类,遵循“开闭原则”,对扩展开放,对修改封闭。易于替换与切换。原创 2024-04-27 13:25:38 · 467 阅读 · 0 评论 -
探索Java设计模式:观察者模式
观察者模式的核心思想是定义一个目标对象(Subject),它可以维护一系列依赖于它的观察者对象(Observer)。当目标对象的状态发生变化时,会自动通知所有注册的观察者,使其做出相应的响应。观察者与目标对象之间通过接口进行解耦,观察者不需要了解目标对象的内部实现细节,只需关注自己感兴趣的事件。Subject(目标对象):定义了添加观察者、移除观察者以及通知观察者的方法。目标对象负责维护观察者列表,并在状态变化时触发通知。Observer(观察者)原创 2024-04-27 13:25:15 · 615 阅读 · 0 评论 -
探索Java设计模式:适配器模式
适配器模式的核心思想是通过创建一个适配器类,将原有接口转换为目标接口,从而使得原本无法直接协作的类能够相互配合。目标接口(Target Interface):定义客户端期望的接口,可以是新的接口或已有的接口标准。被适配者(Adaptee):现有系统中已经存在的接口或类,其接口与目标接口不兼容。适配器(Adapter):实现目标接口,同时持有被适配者的引用,在其方法中调用被适配者的相应功能,从而将被适配者接口转换为目标接口。对象适配器:适配器类继承自被适配者,并实现目标接口。原创 2024-04-25 16:14:55 · 504 阅读 · 0 评论 -
探索Java设计模式:原型模式
*原型模式(Prototype Pattern)**是一种创建型设计模式,它通过复制已有对象来创建新对象,而不是通过new关键字实例化。这种模式适用于需要快速创建大量相似对象,或者对象创建过程较复杂、耗时,且存在大量重复初始化逻辑的情况。原型接口(Prototype Interface):声明克隆自身的方法,通常为clone()或copy()。具体原型(Concrete Prototype):实现原型接口,提供复制自身的具体实现。原创 2024-04-25 11:09:37 · 804 阅读 · 0 评论 -
探索Java设计模式:中介者模式
中介者模式通过集中处理对象间的交互逻辑,将原本复杂的网状结构简化为星形结构,使得对象各自关注自身的业务逻辑,而将跨对象的通信委托给中介者处理。总结来说,中介者模式通过引入中介者对象来协调多个对象间的交互,有效地降低了对象间的耦合度,简化了系统结构。通过引入中介者,可以将模块间的直接交互替换为与中介者的交互,简化模块间的耦合,提高系统的可维护性和扩展性。:在多人在线游戏中,游戏服务器可以作为中介者,处理玩家之间的交互,如聊天、交易、战斗等,避免玩家对象间的直接通信。在这个例子中,我们定义了。原创 2024-04-25 11:09:22 · 476 阅读 · 0 评论 -
探索Java设计模式:装饰器模式
装饰器模式的核心思想是在不改变对象接口的前提下,通过组合而非继承的方式为对象添加额外功能。Component(组件):定义一个对象接口,可以给这些对象动态添加职责。ConcreteComponent(具体组件):实现了Component接口,定义了基础功能。Decorator(装饰器):实现了Component接口,持有一个Component对象的引用,并在原有接口基础上添加新功能。装饰器与具体组件具有相同的接口,使得装饰器对象可以替代原始对象。ConcreteDecorator(具体装饰器)原创 2024-04-23 16:59:25 · 701 阅读 · 0 评论 -
探索Java设计模式:状态模式
状态模式通过引入状态类来封装与状态相关的行为,并使上下文对象(即拥有状态的对象)与这些状态对象之间进行交互,从而将复杂的“条件判断”代码转化为对象之间的简单方法调用。这样做的好处在于,当需要增加新状态或修改状态相关行为时,只需增加或修改状态类,而无需改动上下文对象的代码,增强了系统的可扩展性和可维护性。:在涉及复杂业务流程的应用中,如订单处理、项目审批等,状态模式可以清晰地表示流程中的各种状态以及状态之间的转移规则,使得流程控制更为直观且易于扩展。这样,当ATM机的状态发生改变时,只需更改。原创 2024-04-22 18:09:35 · 384 阅读 · 0 评论 -
探索Java设计模式:外观模式
外观模式的核心思想是为一组复杂的子系统接口提供一个统一的、更高级别的接口。这个高级接口使得客户端能够更容易地使用子系统,而无需了解其内部的复杂性。外观模式将子系统与客户端解耦,隐藏了子系统组件间的交互细节,对外提供一个简单、一致且易于使用的接口。Facade(外观):为子系统提供一个统一的接口,定义一组高层接口供客户端使用,这些接口通常是对子系统接口的进一步抽象或组合。Subsystems(子系统):包含多个类和接口,实现具体的业务逻辑。子系统并不知道外观的存在,它们仍保持原有的独立性。简化接口。原创 2024-04-22 12:57:03 · 984 阅读 · 0 评论 -
探索Java设计模式:建造者模式
*建造者模式(Builder Pattern)**是一种创建型设计模式,它将一个复杂对象的构建过程与其表示相分离,使得同样的构建过程可以创建不同的表示。建造者模式主要适用于对象的构造过程较为复杂,或者需要分步骤创建,且需要支持不同配置或表现形式的情况。产品类:定义要构建的复杂对象的接口或实现。抽象建造者:声明创建产品各个部分的接口,一般包含一系列方法。具体建造者:实现抽象建造者的接口,提供创建产品各个部分的具体实现。导演者(Director)原创 2024-04-22 12:56:39 · 627 阅读 · 0 评论 -
探索Java设计模式:命令模式
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为一个对象,使得使用命令对象的客户端与请求接收者(即具体执行命令的对象)解耦。在Java编程中,命令模式常用于需要对请求进行记录、撤销、重做、队列化、多级事务等复杂操作的场景。总结来说,命令模式通过将请求封装为命令对象,实现了请求发送者与接收者的解耦,增强了系统的可扩展性和灵活性。:命令模式可以帮助记录用户的操作历史,每个命令对象都包含了操作的具体信息。通过命令模式,可以将这些操作封装成命令对象,便于实现撤销、重做等功能。原创 2024-04-22 12:56:19 · 464 阅读 · 0 评论 -
探索Java设计模式:抽象工厂模式
*抽象工厂模式(Abstract Factory Pattern)**是一种创建型设计模式,它提供了一种创建相关或依赖对象家族的接口,而无需指定具体的类。抽象工厂模式的核心在于创建一系列相关的产品族,每个产品族中的产品具有一定的关联性或一致性,且各产品族之间可能互斥或不兼容。这种模式能够保证客户端代码使用的一组相关对象来自同一个“家族”。封装复杂性:隐藏了具体产品的创建细节,客户端只需与抽象工厂交互,简化了对象的创建过程。隔离变化。原创 2024-04-21 10:17:44 · 913 阅读 · 0 评论 -
探索Java设计模式:桥接模式
桥接模式的核心思想是将抽象部分与实现部分分离,分别用两个独立的继承结构来表示,从而实现这两部分的独立扩展。抽象部分定义了抽象接口,包含对实现部分的引用;实现部分则定义了实现接口的具体实现。这样,抽象部分和实现部分可以独立地进行变化,而不影响彼此。Abstraction(抽象类):定义抽象接口,包含对实现部分的引用。RefinedAbstraction(扩展抽象类):扩展抽象类,实现或覆盖抽象类的部分方法,具体使用实现部分的功能。Implementor(实现接口):定义实现部分的接口,供实现类实现。原创 2024-04-20 23:47:44 · 812 阅读 · 0 评论 -
探索Java设计模式:模板方法模式
模板方法模式的核心思想是定义一个操作中的算法骨架,并将一些步骤延迟到子类中实现。它包含一个抽象类,该类定义了算法的通用步骤,并在其中声明了一些抽象方法(称为“基本方法”),这些方法由子类来实现。同时,抽象类还提供了一个模板方法,该方法定义了算法的执行顺序,调用基本方法来完成具体逻辑。AbstractClass(抽象类):定义了一个或多个抽象方法(基本方法),以及一个模板方法。模板方法定义了算法的骨架,并调用基本方法。ConcreteClass(具体子类)原创 2024-04-20 23:00:51 · 814 阅读 · 0 评论 -
探索Java设计模式:单例模式
*单例模式(Singleton Pattern)**是一种创建型设计模式,其核心目标是确保一个类在整个应用程序中只存在一个实例,并提供一个全局访问点来获取这个实例。资源优化:对于那些需要频繁创建和销毁、或者占用大量系统资源的对象,单例模式可以保证它们只被创建一次,从而节约资源。状态共享:在需要多个对象共享同一份数据或状态时,单例模式可以提供一个全局唯一的共享点。控制全局访问:对于需要严格控制数量的对象(如数据库连接池、线程池),单例模式可以防止无限制的实例化,保证系统的稳定性和一致性。原创 2024-04-21 20:00:00 · 746 阅读 · 0 评论 -
探索Java设计模式:享元模式
享元模式的核心思想是运用共享技术有效地支持大量细粒度对象的复用。它通过共享已经存在的同类对象,减少系统中对象的数量,从而降低内存占用,提高系统的性能。享元模式的关键在于区分对象的内在状态(Intrinsic State,存储在享元对象内部,不会随环境改变而改变)和外在状态(Extrinsic State,由客户端传入,随环境改变而改变)。Flyweight(享元接口):定义享元对象的公共接口,通常包含外在状态的设置方法。ConcreteFlyweight(具体享元类)原创 2024-04-21 12:00:00 · 677 阅读 · 0 评论 -
探索Java设计模式:组合模式
组合模式的核心思想是将对象组织成树形结构,其中每个节点(无论是叶子节点还是容器节点)都具有相同的操作接口,使得客户端可以以统一的方式处理单个对象和对象集合。这种模式能够模拟现实世界中的“整体-部分”关系,如文件系统、公司组织架构、DOM树等。Component(组件接口):定义所有节点(包括叶子节点和容器节点)共有的操作接口。Leaf(叶子节点):实现Component接口,表示树结构中的叶节点,没有子节点。Composite(容器节点)原创 2024-04-21 09:00:00 · 445 阅读 · 0 评论 -
探索Java设计模式:责任链模式
在Java编程中,责任链模式常用于处理一系列可能有多种不同处理方式的事件或请求,如日志记录、权限验证、异常处理等场景。总结来说,责任链模式通过构建一个处理对象链,使得请求可以在链中自由传递直至被正确处理,从而实现了请求发送者与接收者的解耦,增强了系统的灵活性和可扩展性。每个处理器负责处理特定类型的异常,当异常发生时,按照链的顺序寻找合适的处理器进行处理,如记录日志、通知用户、回滚事务等。当用户发起请求时,系统会根据用户的权限等级,沿责任链进行验证,直至找到匹配的权限节点或验证失败。最后,我们创建了一个。原创 2024-04-20 20:53:37 · 661 阅读 · 0 评论 -
探索Java设计模式:策略模式
*策略模式(Strategy Pattern)**是一种行为设计模式,它定义了一系列算法,并将每个算法封装在一个独立的类中,使得它们可以互相替换。策略模式让算法的变化独立于使用它的客户端,从而使得系统更易于扩展和维护。Context(环境类):持有一个策略对象的引用,负责调用策略对象的接口来执行相关操作。环境类与具体策略解耦,仅依赖于抽象策略接口。Strategy(抽象策略类):定义了所有支持的算法的公共接口,使策略对象可以被环境类以统一的方式调用。ConcreteStrategy(具体策略类)原创 2024-04-20 20:52:31 · 579 阅读 · 0 评论