Java设计模式及企业级开发应用场景

本文主要对Java 设计模式以及在企业级软件开发中的应用场景进行简述。

一、创建型模式

创建型模式主要关注对象的创建过程,通过抽象创建过程,使得对象的创建与使用分离,从而提高代码的灵活性和可维护性。

  1. 单例模式(Singleton)
    • 简述:确保一个类仅有一个实例,并提供全局访问点。
    • 应用场景:在整个应用程序中,像配置管理类、日志记录类等,往往仅需一个实例,单例模式可防止资源浪费与冲突。
  2. 工厂模式(Factory)
    • 简述:定义创建对象的接口,由子类决定实例化具体类。
    • 应用场景:当对象创建过程繁杂,或要依据不同条件创建不同类型对象时适用,比如依据不同用户类型创建各异的用户对象。
  3. 抽象工厂模式(Abstract Factory)
    • 简述:提供创建一系列相关或相互依赖对象的接口,无需指定具体类。
    • 应用场景:例如创建不同操作系统下相关联的窗口、按钮、文本框等 UI 组件,用抽象工厂模式能统一管理创建过程。
  4. 建造者模式(Builder)
    • 简述:将复杂对象的构建和其表示分离,使相同构建过程可创建不同表示。
    • 应用场景:适用于创建包含多个部件的对象,如汽车对象,或包含多个配置选项的电脑对象,能更灵活地构建。
  5. 原型模式(Prototype)
    • 简述:用原型实例指定创建对象的种类,通过拷贝原型创建新对象。
    • 应用场景:当创建对象成本高,或需创建多个相似对象时,如创建数据库连接对象,利用原型模式克隆创建新对象可提升效率。

二、结构型模式

结构型模式主要关注对象的组合,通过将类或对象组合成更大的结构,以实现新的功能或优化现有结构。

  1. 适配器模式(Adapter)
    • 简述:把一个类的接口转换为客户期望的另一个接口。
    • 应用场景:当系统需使用现有类,但其接口与系统要求不符时,比如将旧系统接口适配到新系统中。
  2. 桥接模式(Bridge)
    • 简述:将抽象部分和实现部分分离,使其能独立变化。
    • 应用场景:在图形绘制系统中,图形的形状和颜色可作为两个独立变化的维度,桥接模式可将它们分离,实现各自独立变化。
  3. 组合模式(Composite)
    • 简述:把对象组合成树形结构来表示 “部分 - 整体” 的层次结构。
    • 应用场景:在文件系统中,文件和文件夹构成树形结构,组合模式可统一处理文件和文件夹。
  4. 装饰器模式(Decorator)
    • 简述:动态地给对象添加额外职责。
    • 应用场景:在不影响其他对象的情况下,若要动态为对象添加额外功能,如给窗口添加滚动条、边框等装饰时适用。
  5. 外观模式(Facade)
    • 简述:为子系统中的一组接口提供统一界面。
    • 应用场景:当复杂子系统有众多类和接口,而客户端仅需使用部分功能时,比如操作系统中,用户通过简单界面操作实现复杂系统功能。
  6. 享元模式(Flyweight)
    • 简述:运用共享技术有效支持大量细粒度对象。
    • 应用场景:系统中存在大量相同或相似对象,且其创建和销毁开销大时,例如游戏中的大量子弹对象,可通过享元模式共享相同属性,减少内存占用。
  7. 代理模式(Proxy)
    • 简述:为其他对象提供代理以控制对该对象的访问。
    • 应用场景:需要控制对象访问时,如远程代理、虚拟代理、保护代理等场景。

三、行为型模式

行为型模式主要关注对象之间的交互和职责分配,通过定义对象之间的通信方式和职责分配,使得系统更加灵活和可维护。

  1. 责任链模式(Chain of Responsibility)
    • 简述:解除请求发送者和接收者之间的耦合,使多个对象都有机会处理请求。
    • 应用场景:当一个请求需多个对象处理,且处理顺序不确定时,比如请假审批流程中,不同级别领导依次审批请假申请。
  2. 命令模式(Command)
    • 简述:将请求封装为对象,可用不同请求对客户进行参数化。
    • 应用场景:需要解耦请求调用者和接收者,且支持请求的撤销和重做,如文本编辑器中的撤销和重做操作。
  3. 解释器模式(Interpreter)
    • 简述:给定语言,定义其文法表示,并定义解释器来解释语言中的句子。
    • 应用场景:需要解释执行某种语言时,如编译器中解释执行脚本语言。
  4. 迭代器模式(Iterator)
    • 简述:提供顺序访问聚合对象中各元素的方法,且不暴露对象内部表示。
    • 应用场景:遍历聚合对象元素且不希望暴露其内部表示时,如遍历列表、数组等。
  5. 中介者模式(Mediator)
    • 简述:用中介对象封装一系列对象交互。
    • 应用场景:系统中对象间交互复杂,存在大量依赖关系时,比如聊天系统中,多个用户间的消息传递通过中介者管理。
  6. 备忘录模式(Memento)
    • 简述:在不破坏封装性的前提下,捕获对象内部状态并在对象外保存。
    • 应用场景:需要保存和恢复对象状态时,如文本编辑器中保存和恢复文本编辑历史。
  7. 观察者模式(Observer)
    • 简述:定义对象间一对多的依赖关系,当一个对象状态改变时,依赖它的对象会收到通知并自动更新。
    • 应用场景:当一个对象状态变化需通知其他对象进行相应处理时,如股票交易系统中,股票价格变化时通知关注该股票的投资者。
  8. 状态模式(State)
    • 简述:允许对象在内部状态改变时改变其行为。
    • 应用场景:对象行为取决于其状态,且需在运行时根据状态改变行为,如订单处理系统中,不同订单状态(待付款、已付款、已发货等)下操作不同。
  9. 策略模式(Strategy)
    • 简述:定义一系列算法,封装起来并使其可相互替换。
    • 应用场景:系统存在多个算法,需根据不同情况选择不同算法时,如电商系统中根据不同促销活动选择不同折扣算法。
  10. 模板方法模式(Template Method)
    • 简述:定义操作算法的骨架,将一些步骤延迟到子类中实现。
    • 应用场景:需要定义算法骨架,将部分步骤延迟到子类实现时,如游戏开发中,游戏角色行为定义模板方法,具体行为由子类实现。
  11. 访问者模式(Visitor)
    • 简述:表示作用于对象结构中各元素的操作。
    • 应用场景:需要对对象结构中的元素进行多种不同操作,且不希望在元素类中定义这些操作时,如在文件系统中对文件和文件夹进行统计文件大小、查找文件等不同操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值