`
wing123
  • 浏览: 807559 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

单例与静态的使用

    博客分类:
  • Java
阅读更多

关于这个问题,下面是一些同仁的观点:

观点一:(单例
单例模式比静态方法有很多优势:
首先,单例可以继承类,实现接口,而静态类不能(可以集成类,但不能集成实例成员);
其次,单例可以被延迟初始化,静态类一般在第一次加载是初始化;
再次,单例类可以被集成,他的方法可以被覆写;
最后,或许最重要的是,单例类可以被用于多态而无需强迫用户只假定唯一的实例。举个例子,你可能在开始时只写一个配置,但是以后你可能需要支持超过一个配置集,或者可能需要允许用户从外部从外部文件中加载一个配置对象,或者编写自己的。你的代码不需要关注全局的状态,因此你的代码会更加灵活。

观点二:(静态方法

静态方法中产生的对象,会随着静态方法执行完毕而释放掉,而且执行类中的静态方法时,不会实例化静态方法所在的类。如果是用singleton,   产生的那一个唯一的实例,会一直在内存中,不会被GC清除的(原因是静态的属性变量不会被GC清除),除非整个JVM退出了。这个问题我之前也想几天,并且自己写代码来做了个实验。

观点三:(Good!
由于DAO的初始化,会比较占系统资源的,如果用静态方法来取,会不断地初始化和释放,所以我个人认为如果不存在比较复杂的事务管理,用singleton会比较好。

 

总结:

 

个人认为:

1、内存占用上,都一样。

2、垃圾回收上,静态方法回收及时,单例由于存在静态类变量,是同JVM的消失而消失的

所以,不涉及事务时,方法使用率高用静态方法,类的使用率高则用单例类

 

 

分享到:
评论

相关推荐

    Java单例模式实现静态内部类方法示例

    "Java单例模式实现静态内部类方法示例" Java单例模式是软件设计模式中最基本和最常见的一种设计模式,也是最容易理解的一种设计模式。它的主要思想是确保某个类只有一个实例,并且提供一个全局访问点来访问该实例。...

    计算机后端-Java-图解java设计模式030 单例(静态代码.avi

    计算机后端-Java-图解java设计模式030 单例(静态代码.avi

    计算机后端-Java-图解java设计模式029 单例(静态常.avi

    计算机后端-Java-图解java设计模式029 单例(静态常.avi

    QT静态单例管理信号和槽

    在Qt中,我们通常使用静态成员函数来实现单例,确保任何时候都只能通过这个函数创建或获取该类的实例。 创建Qt静态单例的典型步骤如下: 1. **定义类**:首先,创建一个类,例如`SingletonClass`,它继承自你想要...

    单例模式中声明静态自己类型的指针编译显示未定义处理

    1. **正确地初始化静态成员变量**:在单例模式中,静态成员变量通常用来存储单例实例。确保在单例类的cpp文件中,有如下初始化代码: ```cpp // Singleton.h class Singleton { public: static Singleton* ...

    第5天static静态关键字和单例模式.pptx

    - 实现单例模式等设计模式时也常用到静态方法。 #### 四、静态属性和方法的内存结构 1. **对象属性**: - 存储在堆内存中与每个对象实例相关联。 - 每个对象实例有一份自己的拷贝。 2. **类属性**: - 存储在...

    单例模式详解 1. 什么是单例模式? 1.1 单例模式的核心要素 1.2 为什么需要单例模式? 2. 单例模式的实现方式 2.1 饿汉式(静态常量) 2.2 饿汉式(静态代码块) 2.3 懒汉式(线程

    单例模式详解 1. 什么是单例模式? 1.1 单例模式的核心要素 1.2 为什么需要单例模式? 2. 单例模式的实现方式 2.1 饿汉式(静态常量) 2.2 饿汉式(静态代码块) ...11.1.4 使用单例模式的简单日志系统

    使用单例模式实现计数器

    3. 提供一个公共的静态方法,作为获取单例实例的入口,这个方法通常称为`GetInstance()`。 以下是一个简单的C#单例模式实现计数器的例子: ```csharp public sealed class Counter { private static readonly ...

    Java中的单例模式与静态类

    单例模式与静态类(一个类,所有方法为静态方法)是另一个非常有趣的问题,在《Java中有关单例模式的面试问题》博文中露掉了,由于单例模式和静态类都具有良好的访问性,它们之间有许多相似之处,例如,两者可以直接...

    单例模式与垃圾回收机制

    ### 单例模式与垃圾回收机制 #### 一、引言 在软件开发领域,设计模式作为一种被广泛接受的最佳实践,对于提高代码质量和可维护性起着重要作用。单例模式作为23种经典设计模式之一,确保了某个类只有一个实例,并...

    使用单例模式创建学生管理系统(饿汉式、懒汉式)

    在这个场景中,我们将探讨如何使用单例模式来创建一个学生管理系统,主要涉及“饿汉式”和“懒汉式”两种实现方式。 **饿汉式单例** 饿汉式单例在类加载时就完成了实例化,因此它是线程安全的。这种方式保证了单例...

    php单例模式实例

    在PHP编程中,单例模式是一种非常常用的设计模式,它保证了...总的来说,单例模式在PHP编程中有着广泛的应用,通过合理的使用,可以提高代码的可维护性和性能。了解并熟练掌握单例模式,对于提升PHP开发技能至关重要。

    c++单例模式线程日志类

    在C++中,通常通过私有构造函数和静态成员函数来实现单例。静态成员函数确保只有一个实例被创建,同时提供全局访问点。 日志类在此场景中的设计考虑了多线程安全。在多线程环境中,多个线程可能同时尝试写入日志,...

    几种单例模式demo

    单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制资源的唯一性、管理共享配置或者创建昂贵的对象时避免频繁创建销毁。 ...

    java 设计模式 单例模式

    //单例模式,始终只产生一个对象 /*public class SingleTest { public static void main(String[] args) { SingleTon singleTon1=SingleTon.getInstance(); SingleTon singleTon2=SingleTon.getInstance(); ...

    joomla里面的单例模式和纯静态类

    在Joomla!涉及到了很多的单例模式,比如JFactory,JURI等等。 对于一个请求中需要一个对象实例的,joomla大多采用了单例模式,可以避免重复实例化带来的资源浪费和性能损耗。

    单例模式的简单使用

    在某些场景下,过度使用单例可能会导致设计上的问题,因此需谨慎使用。 在实际项目中,我们需要根据需求来决定是否使用单例。如果确实需要全局共享且生命周期需要控制的对象,单例模式是很好的选择。但如果不涉及...

    C#描述中的单例与多例模式

    根据提供的标题、描述、标签及部分内容,我们可以详细探讨C#中的单例(Singleton)与多例(Multiton)设计模式。 ### 单例模式 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问...

    OC单例模式讲解

    3. **声明并初始化静态变量**:声明一个私有的静态变量用于存储单例对象,并且在类的初始化过程中对其进行初始化。 4. **提供获取实例的方法**:通常会提供一个静态方法或类方法来获取单例对象,这个方法会检查是否...

Global site tag (gtag.js) - Google Analytics