【设计模式】单例模式、工厂方法模式、抽象工厂模式

1. 单例模式 (Singleton Pattern):

场景: 在一个应用程序中,需要一个全局唯一的配置管理器,确保配置信息只有一个实例。

java 复制代码
public class ConfigManager {
    private static ConfigManager instance;

    private ConfigManager() {
        // 私有构造函数,防止外部实例化
    }

    public static ConfigManager getInstance() {
        if (instance == null) {
            instance = new ConfigManager();
        }
        return instance;
    }

    // 其他配置管理的方法...
}

2. 工厂方法模式 (Factory Method Pattern):

场景: 创建一组具有相似功能但具体实现不同的日志记录器。

java 复制代码
public interface Logger {
    void log(String message);
}

public class ConsoleLogger implements Logger {
    @Override
    public void log(String message) {
        System.out.println("Console log: " + message);
    }
}

public class FileLogger implements Logger {
    @Override
    public void log(String message) {
        // 实现文件日志记录逻辑
    }
}

public interface LoggerFactory {
    Logger createLogger();
}

public class ConsoleLoggerFactory implements LoggerFactory {
    @Override
    public Logger createLogger() {
        return new ConsoleLogger();
    }
}

public class FileLoggerFactory implements LoggerFactory {
    @Override
    public Logger createLogger() {
        return new FileLogger();
    }
}

3. 抽象工厂模式 (Abstract Factory Pattern):

场景: 创建不同操作系统下的界面元素,如按钮和文本框。

java 复制代码
// Abstract Product
public interface Button {
    void render();
}

// Concrete Products
public class WindowsButton implements Button {
    @Override
    public void render() {
        // Windows 按钮渲染逻辑
    }
}

public class MacOSButton implements Button {
    @Override
    public void render() {
        // MacOS 按钮渲染逻辑
    }
}

// Abstract Factory
public interface GUIFactory {
    Button createButton();
}

// Concrete Factories
public class WindowsFactory implements GUIFactory {
    @Override
    public Button createButton() {
        return new WindowsButton();
    }
}

public class MacOSFactory implements GUIFactory {
    @Override
    public Button createButton() {
        return new MacOSButton();
    }
}

这些例子演示了设计模式在具体场景中的应用,每个模式都解决了特定问题,并提供了一种结构化和灵活的解决方案。在实际开发中,根据具体情况选择适当的设计模式可以提高代码的质量和可维护性。

相关推荐
Carl_奕然2 小时前
【智能体】Loop 的四种设计模式之:Event-Driven Loop(2026 最新版)
人工智能·驱动开发·python·设计模式
Carl_奕然2 小时前
【智能体】Loop 的四种设计模式之:Hill Climbing Loop(2026 最新版)
人工智能·python·设计模式
晚安code20 小时前
设计模式入门:吃透 SOLID 原则与迪米特法则,再学 5 个高频模式
后端·设计模式
染指11101 天前
135.Agent-多Agent框架-LangChain多智能体(SubAgents子代理)
数据库·人工智能·设计模式·langchain·agent·agents
路弥行至2 天前
【Head First 设计模式】第 2 章:观察者模式 —— 用现代 C++ 重新解读“交互对象的松耦合
c++·经验分享·笔记·观察者模式·设计模式·入门教程·headfirst
YYYing.2 天前
【设计模式系列 (九) 】装饰器模式
c++·后端·设计模式·装饰器模式·c/c++
沫璃染墨2 天前
《从零入门Linux系统篇(五十六):线程篇·九——生产者消费者模型:从条件变量到BlockingQueue实现》
linux·服务器·c++·驱动开发·设计模式·架构·系统架构
c萱3 天前
AI产品经理——01基础认知篇
设计模式·prompt·aigc·产品经理·ai编程·gitcode·ai-native
YYYing.3 天前
【设计模式系列 (八) 】组合模式
c++·后端·设计模式·组合模式·c/c++
geovindu4 天前
rust: Composite Pattern
开发语言·后端·设计模式·rust·组合模式