设计模式(Design Patterns)

设计模式(Design Patterns) 是软件工程中解决常见设计问题可复用、最佳实践方案 。它们不是现成的代码,而是经过验证的设计思想模板,帮助开发者构建灵活、可维护、可扩展的软件系统。


设计模式的核心价值

  1. 复用经验:避免重复"造轮子",直接使用行业沉淀的成熟解决方案。
  2. 标准化沟通:如"用单例模式实现",开发者立刻理解设计意图。
  3. 解耦代码:降低模块间的依赖性,提升系统灵活性。
  4. 提高可维护性:代码结构清晰,易于修改和扩展。

设计模式的分类(23种经典模式)

根据目的可分为三类:

1. 创建型模式(Creational)

解决对象创建问题,隔离实例化过程。

  • 单例(Singleton):确保一个类仅有一个实例(如全局配置对象)。
  • 工厂方法(Factory Method):让子类决定创建哪种对象。
  • 抽象工厂(Abstract Factory) :创建相关对象的家族(如不同风格的UI组件)。
  • 建造者(Builder):分步构造复杂对象(如拼装电脑)。
  • 原型(Prototype):通过克隆现有对象创建新对象。
2. 结构型模式(Structural)

解决类与对象组合问题,构建灵活结构。

  • 适配器(Adapter):让不兼容的接口协同工作(如转接头)。
  • 装饰器(Decorator):动态添加功能(如给咖啡加糖)。
  • 代理(Proxy):控制对象访问(如远程代理、缓存代理)。
  • 外观(Facade):简化复杂子系统的接口(如一键关闭所有设备)。
  • 桥接(Bridge):分离抽象与实现,使两者独立变化。
  • 组合(Composite):统一处理树形结构(如文件系统)。
  • 享元(Flyweight):共享细粒度对象,减少内存占用(如字符池)。
3. 行为型模式(Behavioral)

解决对象间职责分配与通信问题。

  • 观察者(Observer):一对多的状态通知(如事件监听)。
  • 策略(Strategy):封装算法,使其可互换(如支付方式)。
  • 命令(Command):将请求封装为对象(如撤销/重做操作)。
  • 状态(State):让对象在不同状态下行为不同(如电梯运行状态)。
  • 模板方法(Template Method):定义算法骨架,子类重写步骤。
  • 迭代器(Iterator):提供遍历集合的统一接口。
  • 责任链(Chain of Responsibility):让多个对象依次处理请求(如审批流程)。

示例:单例模式(Singleton)

场景:全局只需一个实例(如数据库连接池)。

java 复制代码
public class DatabasePool {
    // 1. 私有静态实例
    private static DatabasePool instance;
    
    // 2. 私有构造方法(禁止外部new)
    private DatabasePool() {}
    
    // 3. 全局访问点
    public static synchronized DatabasePool getInstance() {
        if (instance == null) {
            instance = new DatabasePool();
        }
        return instance;
    }
}
// 使用:DatabasePool pool = DatabasePool.getInstance();

学习设计模式的关键原则

  1. 理解场景:模式解决什么问题?何时用?何时不用?
  2. 遵循SOLID原则
    • 单一职责(一个类只做一件事)
    • 开闭原则(对扩展开放,对修改关闭)
    • 里氏替换(子类可替换父类)
    • 接口隔离(接口尽量小而专)
    • 依赖倒置(依赖抽象而非具体实现)
  3. 避免滥用:强行套用模式可能使代码更复杂。

推荐资源

  • 书籍:《设计模式:可复用面向对象软件的基础》(GoF经典)
  • 图解:Refactoring.Guru 网站(链接
  • 实践:在开源项目(如Spring、JDK)中观察模式应用。

设计模式是"术",设计原则(如SOLID)才是"道"。掌握本质才能灵活运用!

相关推荐
第一个传播学14 小时前
忍者龙剑传4豪华版下载及其玩法解析
设计模式
第一个传播学1 天前
赛博朋克2077修改器下载及其用法
设计模式
萧青山2 天前
2026国标合规:Agent Loop合规设计模式的6种循环架构(GB/Z 185.6+Python)
python·设计模式·agent loop·gb/z 185·国标合规
杨充2 天前
11.DDD与战术建模
设计模式·开源·代码规范
杨充2 天前
12.综合实战图片框架
设计模式·开源·代码规范
芝士熊爱编程2 天前
创建型模式-单例模式
java·单例模式·设计模式
咖啡八杯3 天前
GoF设计模式——访问者模式
设计模式·访问者模式
谢栋_3 天前
设计模式从入门到精通之(七)责任链模式
java·设计模式·责任链模式
葬送的代码人生3 天前
别再让 AI 瞎写代码了!Vibe Coding 三步法教你写出靠谱代码
前端·设计模式·架构
无风听海3 天前
Claude Agent Skills 的四种设计模式;从渐进式披露到最小权限
java·算法·设计模式