「java单例模板」java单例写法

博主:adminadmin 2023-01-22 22:06:07 284

本篇文章给大家谈谈java单例模板,以及java单例写法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何在Java中实现单例模式?

私有构造方法

单一实例

创建一个获取实例方法

class Simple {

        //单一实例

private static Simple simple;

        // 私有构造

private Simple() {

super();

}

        //单一实存在返回 不存在时创建

public static Simple getInstance() {

if (simple == null) {

simple = new Simple();

}

return simple;

}

}

java 单例模式这个要怎么理解?

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

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

注意:

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

介绍

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

何时使用:当您想控制实例数目,节省系统资源的时候。

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

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

应用实例:

1、一个班级只有一个班主任。

2、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。

3、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。

优点:

1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。

2、避免对资源的多重占用(比如写文件操作)。

缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

使用场景:

1、要求生产唯一序列号。

2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。

3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。

注意事项:getInstance() 方法中需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化。

在java开发中,为什么要使用单例模式?

java单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。

特点:

一个类只能有一个实例;

自己创建这个实例;

整个系统都要使用这个实例。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。一些资源管理器常常设计成单例模式。

外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用。

内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存放系统配置。这样的系统应当由一个对象来管理这些属性文件。

单例模式,能避免实例重复创建;

单例模式,应用于避免存在多个实例引起程序逻辑错误的场合;

单例模式,较节约内存。

java 单例模式

System.out.println (Singleton.getInstance());

System.out.println (Singleton.getInstance());

main 函数中有这两句,一摸一样。

第一句执行的时候,第一次调用getInstance(),意思是要获取Singleton的一个对象实例。

而正常情况下,我们要获取对象的话是用 new Singleton(),这个方法的,但是这个方法在Singleton里面被声明为:private ,意思是外界不能调用。

不能调用,我怎么用你的对象?

Singleton里面实现了生成对象的方法,getInstance(),你要用他的对象就必须调用这个方法。

而这个方法里面你也看到了,如果

if(instance == null){

instance = new Singleton();

}

如果没有实例则创建一个新的,但是已经创建过的话,就返回已经存在的实例。

所以输出结果:

net.chelson.chapter5.Singleton@de6ced

net.chelson.chapter5.Singleton@de6ced

你两次调用的这个对象的内存地址都是相同的,也就是说,是同一个东西(对象)

这个总的来说就是:

类的构造方法私有化(防止外界构造新对象)

提供获取实例的方法(用于外界调用)

作用:用于提供只能有一个实例的对象。

关于java单例模板和java单例写法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。