Java的23种设计模式前言

前言:

        在软件开发的世界中,编写可维护、可扩展且高效的代码是每个程序员的追求。然而,随着项目规模的扩大和业务逻辑的复杂化,代码往往会变得混乱、难以维护,甚至出现“牵一发而动全身”的问题。这时,设计模式(Design Patterns)便成了我们解决问题的利器。

设计模式是前人经验的总结,是经过反复验证的、针对特定问题的优秀解决方案。它们不仅提供了代码结构的模板,更重要的是,它们帮助我们以更优雅的方式组织代码,提升系统的灵活性和复用性。

java代码示例

git clone https://gitee.com/qq1244811434/23DesignPatterns.git

设计模式的六大原则

1.单一职责原则(Single Responsibility Principle, SRP)

每个类应该只有一个引起它变化的原因。这意味着一个类应该只负责一项职责。

2.开闭原则(Open-Closed Principle, OCP)

软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改的。这通常通过抽象机制,如接口和抽象类来实现。

3.里氏替换原则(Liskov Substitution Principle, LSP)

派生类(子类)必须能够替换其基类(父类)出现的地方,且程序的行为不会发生变化。

4.依赖倒置原则(Dependency Inversion Principle, DIP)

高层模块不应该依赖低层模块,两者都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。

5.接口隔离原则(Interface Segregation Principle, ISP)

 客户端不应该依赖它不使用的接口;一个类对另一个类的依赖应该建立在最小的接口上。

6.迪米特法则(Law of Demeter,LoD)  

也叫最少知识原则,是指在减少系统各个组件之间的耦合度。它的核心思想是,一个对象应该对其他对象有尽可能少的了解。

设计模式的分类

  • 创建型模式用于以灵活和高效的方式创建对象。包括Singleton模式、工厂模式和抽象工厂模式等。
  • 结构型模式用于组合类和对象以形成更大的结构。包括适配器模式、桥接模式和装饰器模式等。
  • 行为型模式用于处理类或对象之间的通信和控制流。包括观察者模式、策略模式和模板方法模式。
  • 创建型模式‌(5种):处理对象创建机制

    • 单例模式 :确保类唯一实例,提供全局访问点(如配置管理类) 
    • 工厂方法模式 :定义创建接口,子类决定实例化对象(如汽车工厂生产不同车型) 
    • 抽象工厂模式 :通过接口和实现类动态创建对象 ‌
    • 建造者模式 :逐步构建复杂对象(如组装电脑) ‌
    • 原型模式 :通过复制现有实例创建新对象(如游戏角色复制) ‌
  • ‌结构型模式‌(7种):处理类和对象的组合方式

    • 适配器模式 :兼容不同接口的类(如电源适配器) ‌
    • 桥接模式 :将抽象与实现分离(如数据库连接池) ‌
    • 组合模式 :组合多个对象形成复合对象(如菜单栏组件) ‌
    • 装饰器模式 :动态添加功能(如动态修改日志格式) ‌
    • 外观模式 :简化子系统交互接口(如系统登录模块) ‌
    • 享元模式 :共享资源减少内存消耗(如缓存池) ‌
    • 代理模式 :控制对象访问(如权限代理) ‌
  • 行为型模式‌(11种):处理对象间通信与协作

    • 观察者模式 :事件订阅机制(如消息推送系统) ‌
    • 命令模式 :封装命令执行(如菜单命令) ‌
    • 状态模式 :根据状态改变行为(如交通灯状态) ‌
    • 策略模式 :动态切换算法(如排序算法) ‌
    • 模板方法模式 :定义算法框架(如烹饪流程) ‌
    • 中介者模式 :集中管理事件(如聊天室消息转发) ‌
    • 责任链模式:请求的链式处理(如审批流程)
    • 访问者模式:解耦数据结构与操作(如文件格式转换)
    • 迭代器模式:统一集合的遍历方式(如列表迭代器)
    • 备忘录模式:对象状态快照(如撤销操作)
    • 解释器模式:特定语法解析(如正则表达式)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值