单例模式的应用实例:
-
配置管理器: 在一个系统中,需要统一管理配置信息,例如数据库连接信息、日志级别等。使用单例模式可以确保整个系统中只有一个配置管理器实例,方便全局访问和修改配置。
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;
}// 其他日志相关的方法和属性
}工厂模式的应用实例:
-
图形绘制工厂:
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");
}
}
}
这些实例展示了单例模式和工厂模式在具体场景中的应用。单例模式用于确保全局只有一个实例,而工厂模式用于创建复杂对象或者一组相关对象,提供更灵活的对象创建机制。