一直想总结一下设计模式,因为设计模式是个抽象的东西,非常容易遗忘,只要不断的总结才能深入了解它们,下面我就从简单的单例模式开始总结吧!
在一些项目中,我经常看到一些人乱用单例模式,或者用的不好。单例模式有以下特点:
1,单例类有且只有一个自身向其他对象提供的实例。
2,单例对象必须自己创建这个实例。
单例类一般有两种写法:
1,饿汉式:
package singleton;
public class Singleton {
/**
* 饿汉式获取对象实例
*/
private static Singleton instance = new Singleton();
/**
* 私有构造子
*/
private Singleton(){
}
/**
* 外部对象唯一获取示例的方法
* @return
*/
public static Singleton getInstance(){
return instance;
}
/**
* @param args
*/
public static void main(String[] args) {
Singleton instance = Singleton.getInstance();
}
}
二:懒汉式
package singleton;
public class LazySingleton {
private static LazySingleton instance = null;
/**
* 私有构造子
*/
private LazySingleton(){
}
/**
* 外部对象唯一获取示例的方法
* 此处用synchronized来防止多线程环境下对象被多次实例化的情况
* @return
*/
public synchronized static LazySingleton getInstance(){
if(instance==null)
instance = new LazySingleton();
return instance;
}
/**
* @param args
*/
public static void main(String[] args) {
LazySingleton instance = LazySingleton.getInstance();
}
}
总结:饿汉和懒汉各有优点。饿汉式在自己被加载时就已经实例化了,而懒汉式则在第一次调用它的实例化方法时才会实例化。饿汉式是以空间换时间,懒汉式是以时间换空间。编程时一般我喜欢用饿汉式,不光是因为饿汉式简单,还由于饿汉更适合java。
分享到:
相关推荐
"设计模式单例模式和工厂模式综合应用"的主题聚焦于两种常用的设计模式:单例模式和工厂模式,并探讨它们如何协同工作来实现高效、灵活的代码结构。这个主题尤其适用于Java编程语言,因为Java的面向对象特性使得设计...
单例模式是软件设计模式中的一种经典模式,它保证了类只有一个实例存在,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于管理共享资源,如数据库连接池、线程池或者配置文件等。结合工厂模式,...
单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。 比如在某个服务器程序中,该服务器的配置信息存放...
单例模式是一种常用的设计模式,它的核心思想是在整个应用程序中,一个类只能有一个实例存在。单例模式常用于控制资源的共享,例如数据库连接池、日志服务等。单例模式有多种实现方式,常见的包括懒汉式、饿汉式以及...
单例模式是一种创建型设计模式,其核心思想是保证一个类只有一个实例,并提供一个全局访问点。这种模式常用于控制资源的共享,如数据库连接、线程池或配置对象等。在Java中,实现单例模式有多种方法,包括懒汉式...
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在...
单例模式是一种确保一个类只有一个实例,并提供全局访问点的设计模式。这种模式在资源管理、缓存、对话框、注册表设置、日志记录等场景中非常有用。为了实现单例,通常我们会创建一个私有的构造函数,防止直接实例化...
细心整合和单例模式和工厂模式的几种模型,懒汉式,饿汉式,如何并发操作模式,等都有详细讲解
单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式常用于控制共享资源,如数据库连接池、线程池或者日志系统等,确保这些资源在整个应用程序中只被创建一次。 单例模式的核心...
在编程领域,设计模式是一种被广泛接受的解决常见问题的模板或最佳实践。Java作为一款广泛应用的面向对象的编程语言,其设计模式的应用对于编写可维护、可扩展和高效的代码至关重要。本篇将深入探讨标题中提及的几种...
C++单例设计模式,单例模式 C++单例设计模式,单例模式
2. **单例模式**:它保证一个类只有一个实例,并提供一个全局访问点。在Java中,通常通过私有构造器、静态工厂方法和双重检查锁定等技术实现单例,以确保线程安全和唯一性。 3. **代理模式**:代理模式为其他对象...
单例模式是软件设计模式中的经典模式之一,其主要目的是控制类的实例化过程,确保在应用程序的整个生命周期中,某个类只有一个实例存在。这样的设计通常适用于那些需要频繁创建和销毁,但资源消耗较大的对象,如...
目录 单例模式的概念 单例模式的要点 单例模式类图 单例模式归类 单例模式的应用场景 单例模式解决的问题 单例模式的实现方式 单例模式实现方式对比 单例模式的概念 单例模式,顾名思义就是只有一个实例,并且由它...
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...
单例模式主要有懒汉式和饿汉式两种实现,饿汉式不会有线程安全的问题,但是提前构造对象占用了一定的资源,如果对内存要求较低的场景可以使用饿汉式实现;懒汉式应使用DCL机制来避免多线程竞争资源的问题,并且懒汉...
python 设计模式之单例模式
Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...
李建忠老师的设计模式-单例模式讲解,示例以C++编程语言呈现。
本文实例讲述了JS 设计模式之:单例模式定义与实现方法。分享给大家供大家参考,具体如下: 良好的设计模式可以显著提高代码的可读性,降低复杂度和维护成本。笔者打算通过几篇文章通俗地讲一讲常见的或者实用的设计...