java程序设计开发,设计思想开源框架-创建型模式,单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式
创建型模式主要用于对象的创建过程,它可以将对象的创建和使用分离,使得代码更具灵活性、可维护性和可扩展性。常见的创建型模式有单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。以下是详细的学习笔记:
单例模式(Singleton Pattern)
定义
确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。
核心角色
- 单例类:负责创建自己的唯一实例,并提供一个静态方法来获取该实例。
实际应用案例
在 Java 中,数据库连接池通常使用单例模式,因为在一个应用程序中,数据库连接池只需要一个实例来管理所有的数据库连接。
// 饿汉式单例模式
class DatabaseConnectionPool {
private static final DatabaseConnectionPool INSTANCE = new DatabaseConnectionPool();
private DatabaseConnectionPool() {
// 初始化数据库连接池
}
public static DatabaseConnectionPool getInstance() {
return INSTANCE;
}
}
案例详细解析
- 饿汉式实现:在类加载时就创建了单例实例,保证了线程安全,但可能会造成资源浪费,因为无论是否使用该实例,它都会被创建。
- 构造函数私有:防止外部类通过
new
关键字创建新的实例。 - 静态方法获取实例:提供一个静态方法
getInstance()
来获取单例实例。
重点
- 唯一性:确保系统中只有一个实例。
- 全局访问:提供一个全局访问点来获取该实例。
- 线程安全:在多线程环境下,要保证实例的创建和访问是线程安全的。
工厂方法模式(Factory Method Pattern)
定义
定义一个创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。
核心角色
- 抽象工厂:定义了创建对象的抽象方法。
- 具体工厂:实现抽象工厂中的抽象方法,负责创建具体的产品对象。
- 抽象产品:定义了产品的接口。
- 具体产品:实现抽象产品接口,是具体的产品对象。
实际应用案例
在游戏开发中,不同类型的敌人需要不同的创建方式,可以使用工厂方法模式来创建敌人。
// 抽象产品:敌人
interface Enemy {
void attack();
}
// 具体产品:僵尸
class Zombi