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

单例与静态的使用

    博客分类:
  • Java
阅读更多

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

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

观点二:(静态方法

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

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

 

总结:

 

个人认为:

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

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

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

 

 

分享到:
评论

相关推荐

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

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

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

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

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

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

    QT静态单例管理信号和槽

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

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

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

    Java中的单例模式与静态类

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

    单例模式与垃圾回收机制

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

    php单例模式实例

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

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

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

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

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

    几种单例模式demo

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

    使用单例模式实现计数器

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

    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. **提供获取实例的方法**:通常会提供一个静态方法或类方法来获取单例对象,这个方法会检查是否...

    使用C++11实现线程安全的单例模式

    线程安全的单例模式实现可以基于静态局部变量和`std::call_once`。以下是一个简单的示例: ```cpp #include class Singleton { private: Singleton() {} // 私有构造函数 static std::once_flag init_flag; ...

Global site tag (gtag.js) - Google Analytics