设计模式常用的有哪些,并加上实际场景

4次阅读
没有评论

常用设计模式及实际场景

一、创建型模式

1. 单例模式(Singleton)

场景:确保一个类只有一个实例,用于全局配置类、连接池、线程池

  1. public class Config {
  2. private static final Config INSTANCE = new Config();
  3. private Config() {}
  4. public static Config getInstance() { return INSTANCE; }
  5. }

2. 工厂模式(Factory)

场景:对象创建逻辑复杂,如 JDBC Connection、Spring BeanFactory

  1. Connection conn = DriverManager.getConnection(url, user, password);

3. 建造者模式(Builder)

场景:构建不可变对象,如 StringBuilder、OkHttpClient、Lombok @Builder

  1. User user = User.builder().name("张三").age(25).build();

二、结构型模式

4. 代理模式(Proxy)

场景:AOP切面、MyBatis懒加载、Spring事务、RPC远程调用

  1. // Spring AOP 底层就是代理模式
  2. @Transactional
  3. public void update() { }

5. 装饰器模式(Decorator)

场景:IO流包装、BufferedInputStream、日志增强

  1. // Java IO 流就是装饰器模式
  2. InputStream in = new BufferedInputStream(new FileInputStream("file.txt"));

6. 适配器模式(Adapter)

场景:转换接口、数据转换、旧系统对接

  1. // Spring MVC HandlerAdapter、兼容新旧接口
  2. List<String> result = Collections.enumeration(list);

三、行为型模式

7. 策略模式(Strategy)

场景:多种支付方式、排序算法切换、促销打折

  1. interface PayStrategy { void pay(); }
  2. class AliPay implements PayStrategy { }
  3. class WechatPay implements PayStrategy { }

8. 观察者模式(Observer)

场景:事件监听、消息订阅、GUI事件、Kafka消息队列

  1. // Spring ApplicationEvent、MQ消息发布订阅
  2. applicationContext.publishEvent(new MyEvent());

9. 模板方法模式(Template Method)

场景:Spring JdbcTemplate、HibernateTemplate、流程固定细节不同

  1. // Spring JdbcTemplate
  2. public void execute(ConnectionCallback<T> action) {
  3. Connection conn = getConnection();
  4. T result = action.doInConnection(conn);
  5. close(conn);
  6. return result;
  7. }

10. 责任链模式(Chain of Responsibility)

场景:过滤器链、拦截器链、审批流程

  1. // Spring Security FilterChain、MyBatis Plugin
  2. FilterChain chain = new FilterChainImpl();

11. 状态模式(State)

场景:订单状态流转、游戏状态机、审批流程

  1. // 订单:待支付 → 已支付 → 已发货 → 已完成
  2. interface OrderState { void handle(); }

四、实际开发高频使用

排名 模式 实际应用
1 单例 Spring Bean默认单例、Config配置类
2 代理 Spring AOP、事务管理、MyBatis
3 工厂 Spring BeanFactory、MyBatis SqlSessionFactory
4 策略 Spring Validation、多种实现切换
5 模板方法 JdbcTemplate、RestTemplate
6 观察者 Spring Event、MQ
7 装饰器 IO流、各种Wrapper类
8 责任链 Spring Security、Netty Pipeline

五、Spring中的设计模式

  1. Spring Bean 创建
  2. ├── 单例模式(默认作用域)
  3. ├── 工厂模式(BeanFactory
  4. ├── 代理模式(AOP
  5. └── 模板方法(JdbcTemplate
  6. Spring MVC
  7. ├── 适配器模式(HandlerAdapter
  8. ├── 责任链模式(HandlerInterceptor
  9. └── 策略模式(HandlerMapping
  10. Spring 事务
  11. └── 代理模式(TransactionInterceptor

六、MyBatis中的设计模式

  1. SqlSessionFactoryBuilder 建造者模式
  2. Executor 模板方法模式
  3. Connection 工厂模式
  4. MetaObject 装饰器模式
  5. Plugin 代理模式

需要我详细解释某个模式或提供更具体的代码示例吗?

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-04-27发表,共计2096字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)