工厂模式 定义:Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses. (定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类 的实例化延迟到其子类。) Product 为抽象产品类负责定义产品的共性,实现对事物最抽象的定义; Creator 为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工 厂 ConcreteCreator 完成的。 【单例模式】 单例模式是一种常用的软件设计模式,它的主要目标是确保一个类在整个应用程序中只有一个实例,并提供全局访问点。单例模式的核心特点包括: 1. **唯一实例**:保证类只有一个实例存在,避免资源浪费和多实例引发的问题。 2. **全局访问点**:通过公共静态方法获取实例,方便所有需要的地方使用。 3. **线程安全**:在多线程环境下,需要确保实例创建过程不会因并发而产生多个实例。 单例模式的实现通常有多种方式,包括懒汉式(线程不安全)、饿汉式、双重检查锁定(DCL)等。线程不安全的懒汉式如文件中所示,需要通过同步机制(如`synchronized`关键字)来修正,以确保在多线程环境下正确实例化。最优的实现方式通常采用DCL,即在`getSingleton`方法中添加`synchronized`关键字,或者使用`volatile`关键字保证可见性和有序性。 【工厂模式】 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建对象时,我们不需要知道具体的实现细节,而是将实例化操作延迟到子类中进行。这样,我们就可以在不修改客户端代码的情况下更换产品实现。 工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式: 1. **简单工厂模式**:提供一个静态方法,根据输入参数动态决定创建哪种类型的实例。 2. **工厂方法模式**:定义一个创建对象的接口,让子类决定实例化哪个类。工厂方法让类的实例化推迟到子类。 3. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而不必指定它们的具体类。 工厂模式的应用场景广泛,例如在JDBC连接数据库时,通过DriverManager.getConnection()方法创建数据库连接,这就是一种简单的工厂模式。同时,工厂模式可以用来替代单例模式,例如在需要延迟初始化或对象池(如缓存)的情况下。 【应用场景比较】 单例模式适用于: - 需要频繁实例化然后销毁的对象,如日志服务。 - 单例可以作为通信的共享数据,比如计数器。 - 当创建一个对象需要消耗大量资源时,如数据库连接。 工厂模式适用于: - 当客户端(调用者)不知道它所创建的对象的类时。 - 当类的实例化必须满足某些条件或步骤时,如配置文件读取。 - 当系统需要提供多种产品类时,可以通过扩展工厂类来实现。 抽象工厂模式适用于: - 当一个系统要独立于它的产品创建、组合和表示时。 - 当系统提供一个产品家族,家族中的各种产品都具有共同的接口或基类时。 总结来说,单例模式关注的是全局唯一性,而工厂模式关注的是对象的创建过程和解耦。抽象工厂模式则更进一步,提供了一组相关的工厂,用于创建一系列相关的产品。这三种模式在实际开发中都有其特定的适用场景,可以根据需求灵活选择。
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/release/download_crawler_static/87910255/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/5a60dc8c91404470a2e82559f007aeb7_qq_57972047.jpg!1)
- 粉丝: 8
- 资源: 99
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)