23种设计模式23种设计模式
首页
介绍
  • 单例模式
  • 工厂方法模式
  • 抽象工厂模式
  • 建造者模式
  • 原型模式
  • 适配器模式
  • 桥接模式
  • 组合模式
  • 装饰器模式
  • 外观模式
  • 享元模式
  • 代理模式
  • 责任链模式
  • 命令模式
  • 解释器模式
  • 迭代器模式
  • 中介者模式
  • 备忘录模式
  • 观察者模式
  • 状态模式
  • 策略模式
  • 模板方法模式
  • 访问者模式
🚀 编程指南
首页
介绍
  • 单例模式
  • 工厂方法模式
  • 抽象工厂模式
  • 建造者模式
  • 原型模式
  • 适配器模式
  • 桥接模式
  • 组合模式
  • 装饰器模式
  • 外观模式
  • 享元模式
  • 代理模式
  • 责任链模式
  • 命令模式
  • 解释器模式
  • 迭代器模式
  • 中介者模式
  • 备忘录模式
  • 观察者模式
  • 状态模式
  • 策略模式
  • 模板方法模式
  • 访问者模式
🚀 编程指南
  • 指南

    • 设计模式入门指南
    • 为什么要学习设计模式?

为什么要学习设计模式?

🤷 不学设计模式会怎样?

让我们看一个真实的例子。假设你要开发一个支付系统,支持微信支付、支付宝支付。

❌ 不用设计模式的写法

public class PaymentService {
    
    public void pay(String type, double amount) {
        if ("wechat".equals(type)) {
            System.out.println("微信支付:" + amount + "元");
            // 微信支付的具体逻辑...
        } else if ("alipay".equals(type)) {
            System.out.println("支付宝支付:" + amount + "元");
            // 支付宝支付的具体逻辑...
        } else if ("unionpay".equals(type)) {
            System.out.println("银联支付:" + amount + "元");
            // 银联支付的具体逻辑...
        }
        // 如果再加一种支付方式呢?继续加 else if...
    }
}

问题来了:

  • 每次新增支付方式,都要修改这个类
  • if-else 越来越长,代码越来越难维护
  • 违反了"开闭原则"

✅ 使用策略模式的写法

// 1. 定义支付策略接口
public interface PayStrategy {
    void pay(double amount);
}

// 2. 实现各种支付策略
public class WechatPay implements PayStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("微信支付:" + amount + "元");
    }
}

public class AlipayPay implements PayStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("支付宝支付:" + amount + "元");
    }
}

// 3. 使用策略
public class PaymentService {
    private PayStrategy strategy;
    
    public void setStrategy(PayStrategy strategy) {
        this.strategy = strategy;
    }
    
    public void pay(double amount) {
        strategy.pay(amount);
    }
}

优点:

  • 新增支付方式只需要新增一个类,不用修改现有代码
  • 代码结构清晰,每个类职责单一
  • 符合"开闭原则"

💡 设计模式的价值

1. 可维护性 ⬆️

代码结构清晰,改动影响范围小,bug 好定位。

2. 可扩展性 ⬆️

新需求来了,只需要添加代码,不用大改现有逻辑。

3. 可复用性 ⬆️

同样的模式可以在不同项目中使用,代码复用率高。

4. 可读性 ⬆️

看到设计模式的名字,就知道代码的意图,便于团队协作。

🌍 设计模式在框架中的应用

框架使用的设计模式
Spring工厂模式、单例模式、代理模式、模板方法模式...
MyBatis建造者模式、工厂模式、代理模式...
JDK迭代器模式、装饰器模式、观察者模式...

学会设计模式,看源码时你会有这样的感觉:

"哦!这里用的是代理模式!" "原来 Spring 是用工厂模式创建 Bean 的!"

🚀 开始你的学习之旅

不要被 23 种模式吓到,其实:

  • 常用的只有 10 种左右
  • 很多模式的思想是相通的
  • 结合实际案例,理解起来并不难

准备好了吗?让我们从最简单的单例模式开始!

👉 单例模式 - 你的第一个设计模式

Prev
设计模式入门指南