单例模式和工厂模式的具体应用实例

本文详细介绍了单例模式如何在配置管理器和日志管理器中确保全局唯一实例,以及工厂模式在图形绘制和数据库连接场景下的应用,展示了这两种设计模式在实际开发中的灵活性和效率提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式的应用实例:

  1. 配置管理器: 在一个系统中,需要统一管理配置信息,例如数据库连接信息、日志级别等。使用单例模式可以确保整个系统中只有一个配置管理器实例,方便全局访问和修改配置。

    public class ConfigurationManager {
        private static ConfigurationManager instance;

        private ConfigurationManager() {
            // 私有构造方法
        }

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

        // 其他配置相关的方法和属性
    }
    2.日志管理器: 在一个应用中,需要记录日志信息,并可能对日志进行统一管理。使用单例模式可以创建一个唯一的日志管理器实例,确保全局统一的日志记录

    public class LogManager {
        private static LogManager instance;

        private LogManager() {
            // 私有构造方法
        }

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

        // 其他日志相关的方法和属性
    }

    工厂模式的应用实例:

  2. 图形绘制工厂: 

interface Shape {
    void draw();
}

class Circle implements Shape {
    public void draw() {
        // 绘制圆形的具体实现
    }
}

class Rectangle implements Shape {
    public void draw() {
        // 绘制矩形的具体实现
    }
}

class Triangle implements Shape {
    public void draw() {
        // 绘制三角形的具体实现
    }
}

class ShapeFactory {
    public static Shape createShape(String type) {
        switch (type) {
            case "Circle":
                return new Circle();
            case "Rectangle":
                return new Rectangle();
            case "Triangle":
                return new Triangle();
            default:
                throw new IllegalArgumentException("Unsupported shape type");
        }
    }
}
数据库连接工厂: 在一个应用中,可能需要连接不同类型的数据库(MySQL、Oracle、SQL Server),可以使用工厂模式创建一个数据库连接工厂,根据需要创建对应的数据库连接对象。

 

interface DatabaseConnection {
    void connect();
}

class MySqlConnection implements DatabaseConnection {
    public void connect() {
        // MySQL数据库连接的具体实现
    }
}

class OracleConnection implements DatabaseConnection {
    public void connect() {
        // Oracle数据库连接的具体实现
    }
}

class SqlConnection implements DatabaseConnection {
    public void connect() {
        // SQL Server数据库连接的具体实现
    }
}

class DatabaseConnectionFactory {
    public static DatabaseConnection createConnection(String type) {
        switch (type) {
            case "MySQL":
                return new MySqlConnection();
            case "Oracle":
                return new OracleConnection();
            case "SQLServer":
                return new SqlConnection();
            default:
                throw new IllegalArgumentException("Unsupported database type");
        }
    }
}
这些实例展示了单例模式和工厂模式在具体场景中的应用。单例模式用于确保全局只有一个实例,而工厂模式用于创建复杂对象或者一组相关对象,提供更灵活的对象创建机制。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值