首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【java面试题】设计模式(如单例模式、工厂模式、观察者模式等

【java面试题】设计模式(如单例模式、工厂模式、观察者模式等

作者头像
用户1750537
发布2025-08-29 14:36:54
发布2025-08-29 14:36:54
7900
代码可运行
举报
运行总次数:0
代码可运行
在这里插入图片描述
在这里插入图片描述

欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199

设计模式是一种在软件设计中经常出现的解决问题的方案,它们提供了一种结构化的方法来处理常见的设计问题。下面我会简要介绍一些常见的设计模式,并提供一个案例分析和相关的源码示例。

  1. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点。单例模式在需要共享资源的场景下非常有用,例如日志记录器、数据库连接池等等。

案例分析:一个日志记录器的实现。只需要一个全局的日志记录器来记录系统日志。

源码示例:

代码语言:javascript
代码运行次数:0
运行
复制
public class Logger {
   private static Logger instance;
   
   private Logger() {
       // 私有构造函数,防止外部实例化
   }
   
   public static synchronized Logger getInstance() {
       if (instance == null) {
           instance = new Logger();
       }
       return instance;
   }
   
   public void log(String message) {
       // 实现日志记录逻辑
   }
}
  1. 工厂模式(Factory Pattern):将对象的实例化过程封装在一个工厂类中,通过工厂类来创建对象的实例。工厂模式可以根据不同的条件来创建不同的对象实例。

案例分析:一个电脑组装工厂,根据客户的需求创建不同配置的电脑。

源码示例:

代码语言:javascript
代码运行次数:0
运行
复制
public interface Computer {
    void assemble();
}

public class GamingComputer implements Computer {
    @Override
    public void assemble() {
        System.out.println("Assembling gaming computer.");
    }
}

public class OfficeComputer implements Computer {
    @Override
    public void assemble() {
        System.out.println("Assembling office computer.");
    }
}

public class ComputerFactory {
    public static Computer createComputer(String type) {
        if (type.equalsIgnoreCase("gaming")) {
            return new GamingComputer();
        } else if (type.equalsIgnoreCase("office")) {
            return new OfficeComputer();
        } else {
            throw new IllegalArgumentException("Invalid computer type.");
        }
    }
}
  1. 观察者模式(Observer Pattern):定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。观察者模式可以在对象之间建立一种松耦合的关系。

案例分析:一个气象站监测天气,并将天气数据通知给多个观察者。

源码示例:

代码语言:javascript
代码运行次数:0
运行
复制
public interface Observer {
    void update(int temperature, int humidity);
}

public class WeatherStation {
    private int temperature;
    private int humidity;
    private List<Observer> observers = new ArrayList<>();
    
    public void addObserver(Observer observer) {
        observers.add(observer);
    }
    
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }
    
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update(temperature, humidity);
        }
    }
    
    public void setWeatherData(int temperature, int humidity) {
        this.temperature = temperature;
        this.humidity = humidity;
        notifyObservers();
    }
}

public class Display implements Observer {
    @Override
    public void update(int temperature, int humidity) {
        System.out.println("Current temperature: " + temperature);
        System.out.println("Current humidity: " + humidity);
    }
}

public class WeatherApp {
    public static void main(String[] args) {
        WeatherStation weatherStation = new WeatherStation();
        weatherStation.addObserver(new Display());
        
        weatherStation.setWeatherData(25, 60);
    }
}

以上是对几种常见的设计模式的简要介绍和示例代码分析。设计模式是软件工程中非常重要的概念,它们可以提高代码的可重用性、可维护性和可扩展性。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档