Java中最简单的设计模式单例模式(SingletonPattern)

Java中最简单的设计模式单例模式(SingletonPattern)

单例模式是Java中最简单的设计模式之一。 这种类型的设计模式是一种创建模式,它提供了创建对象的最佳方式。

此模式涉及一个类,该类负责创建自己的对象,同时确保只创建一个对象。 此类提供了一种直接访问其独特对象的方法,而无需实例化该类的对象。

注意:

在unity中单例的主要作用_unity单例模式_简单的单例模式代码

介绍

意图:确保一个类只有一个实例,并为其提供一个全局访问点。

主要解决方案:全局使用的类被频繁创建和销毁。

unity单例模式_简单的单例模式代码_在unity中单例的主要作用

何时使用:当您想要控制实例数量并节省系统资源时。

解决方法:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

关键代码:构造函数是私有的。

unity单例模式_在unity中单例的主要作用_简单的单例模式代码

应用举例: 1、一个政党只能有一名秘书。 2. Windows是多进程、多线程的。 在操作文件的时候,不可避免的会有多个进程或者线程同时操作一个文件。 因此,所有文件处理都必须通过唯一的实例来执行。 3、一些设备管理器往往采用单例模式设计。 例如,一台计算机有两台打印机,输出时必须处理两台打印机不能打印同一个文件。

优点: 1、内存中只有一个实例,减少了内存开销,特别是在频繁创建和销毁实例的情况下(如管理学院主页页面缓存)。 2.避免资源的多次占用(如文件写入操作)。

缺点:没有接口,没有继承,与单一责任原则冲突。 类应该只关心内部逻辑,而不关心如何在外部实例化它。

unity单例模式_在unity中单例的主要作用_简单的单例模式代码

使用场景: 1.需要生产唯一的序列号。 2、WEB中的计数器不需要每次刷新时都添加到数据库中。 它首先使用单个实例进行缓存。 3.创建的对象消耗太多资源,例如I/O和数据库连接。

注意:getInstance()方法中需要使用同步锁synchronized(Singleton.class),防止多个线程同时进入,导致实例被多次实例化。

为什么使用单例模式?

简单的单例模式代码_在unity中单例的主要作用_unity单例模式

public class Printer {
    private static Printer printer =null;//创建一个私有的全局变量
    /*
     * 如果有多线程并发访问时,上锁,让其排队等候,一次只能一人用。
     */
    public static synchronized Printer getPrinter(){
        if(printer==null){//如果为空,创建本实例
            printer = new Printer();
        }
        return printer;
    }
    /*
     * 构造私有化,保证在系统的使用中,只有一个实例
     */
    private Printer(){
        
    }
}

从代码分析来看,单例模式首先提供了一个可访问的实例化对象。 如果没有这样的对象,打印机类将创建一个。 如果遇到多线程并发访问unity单例模式,加上关键字Synchronized,锁就会让不持有该对象的类处于等待状态。 当前持有打印机的线程任务结束后,等待线程就可以一一持有实例并操作其方法。 这样的过程在编程中称为单例模式。

如果系统中没有使用单例模式unity单例模式,当遇到多线程访问时,打印机会在内存中为请求的类创建一个新的打印机对象创作人,并让这些请求的类去做打印方法。 如此大量的内存占用会导致系统运行缓慢。 就像电脑的CPU一样硬件设备,内存占用极高,电脑感觉卡住。 因为系统的硬件设施需要改动不大,所以我能想到的唯一节省成本的方法就是单例模式,将多个线程置于等待状态,一一解决。 这样既节省了内存,又提交了正在运行的进程。 成本。 这就是单例存在的意义。

文章来源:https://blog.csdn.net/qq_36186690/article/details/82945836