# 设计模式之单例模式 **Repository Path**: fpfgitmy_admin/desing-singleton ## Basic Information - **Project Name**: 设计模式之单例模式 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-04-28 - **Last Updated**: 2021-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 单例(Singleton)设计模式 + 简述:对于某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 + 优点:由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。 + 类型: 1. 懒汉式特点:好处-延迟对象的创建 2. 代码如下 ``` public class SingletonTest {        public static void main(String[] args) {        Order order1 = Order.getInstance();        Order order2 = Order.getInstance();        System.out.println("地址是否相等:" + (order1 == order2));    } } /** * 懒汉式 */ class Order {    // 1.私有化构造方法    private Order() { }    // 2.声明一个静态的为null的对象    private static Order instance = null;    // 3.对外提供公共且静态的实例化方法    public static Order getInstance() {   if (instance == null) {     instance = new Order();      }        return instance;   } } ``` 3. 饿汉式特点:坏处-对象加载时间过长 4. 代码如下 ``` public class SingletonTest {    public static void main(String[] args) {  Order order1 = Order.getInstance();      Order order2 = Order.getInstance();        System.out.println("地址是否相等:" + (order1 == order2));   } } /** * 饿汗式 */ class Order {    // 1.私有化构造方法    private Order() {    }    // 2.实例化一个静态的对象    private static Order instance = new Order();   // 3.对外提供公共且静态的实例化方法    public static Order getInstance() {     return instance;    } } ``` + 应用场景: 1. 网站的计数器:一般也是单例模式实现 2. 数据库连接池的设计 3. 项目中读取配置文件的类,一般也只有一个对象。没有必要每次使用配置文件数据,都生成一个对象去读取。 4. 应用程序的日志应用