6 个典型的Java 设计模式应用场景题

本文探讨了Java中6种常见的设计模式:单例模式用于限制数据库连接池的实例;观察者模式实现天气预报系统的实时通知;工厂方法模式处理电商系统的支付方式;策略模式灵活处理服务器负载均衡策略;装饰器模式动态增强请求处理;责任链模式构建请求处理流程。
摘要由CSDN通过智能技术生成

在这里插入图片描述

单例模式(Singleton)

场景

在一个Web服务中,数据库连接池应当在整个应用生命周期中只创建一次,以减少资源消耗和提升性能。使用单例模式确保数据库连接池的唯一实例。

代码实现

import java.sql.Connection;
import java.sql.SQLException;

public class DatabaseConnectionPool {
   
    private static volatile DatabaseConnectionPool instance;

    private DatabaseConnectionPool() throws SQLException {
   
        // 初始化数据库连接池(省略具体实现)
    }

    public static DatabaseConnectionPool getInstance() throws SQLException {
   
        if (instance == null) {
   
            synchronized (DatabaseConnectionPool.class) {
   
                if (instance == null) {
   
                    instance = new DatabaseConnectionPool();
                }
            }
        }
        return instance;
    }

    public Connection getConnection() {
   
        // 返回连接池中的连接(省略具体实现)
        return null;
    }
}

// 使用示例
try {
   
    DatabaseConnectionPool pool1 = DatabaseConnectionPool.getInstance();
    DatabaseConnectionPool pool2 = DatabaseConnectionPool.getInstance();

    assert pool1 == pool2;
} catch (SQLException e) {
   
    e.printStackTrace();
}

观察者模式(Observer)

场景

一个天气预报系统需要实时通知订阅用户最新的天气变化。使用观察者模式实现发布-订阅机制,使得天气服务端(Subject)能自动通知所有注册的观察者(Observer)>

代码实现

import java.util.ArrayList;
import java.util.List;

interface Observer {
   
    void update(WeatherData weatherData);
}

interface Subject {
   
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers();
}

class WeatherData implements Subject {
   
    private List<Observer> observers = new ArrayList<>();
    private float temperature;
    private float humidity;
    private float pressure;

    @Override
    public void registerObserver(Observer observer) {
   
        observers.add(observer)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zp8126

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值