`

采用单例模式还是静态方法?

 
阅读更多

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

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

观点二:(静态方法

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

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

 

还有一种类就是没有成员变量或者有一些静态成员变量的类,这种类可称为式具类,比如我一在的项目中我将很多从数据库中取数据里的类写成这种类,这种类不妨将全部的方法写成静态方法,用起来方便,执行效率也快(不用new 类少占内存和节省了new的时间),注意前提条件:"没有成员变量或者只有一些静态成员变量",象JDK中就有很多这样的类(多如牛毛)

分享到:
评论

相关推荐

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

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

    PHP设计模式之单例模式原理与实现方法分析

    本文实例讲述了PHP设计模式之单例模式原理与实现方法。分享给大家供大家参考,具体如下: 一、什么是单例模式 作为对象的创建模式,单例模式确保某一个类只有一个...若不采用单例模式,当程序中出现大量数据库操作时

    C++ 单例模式的几种实现方式研究

    但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能会优先考虑使用全局或者静态变量的方式,这样比较简单,也是没学过设计模式的人所能想到的最简单的方式了。 一般情况下...

    Java单例模式实现

    当我们的项目中有这样一个需求,整个项目运行的周期内,有一个类只存在一个实例对象,那么我们可以采用单例设计模式。 单例设计模式有两种形式的,一种是懒汉式,一种是饿汉式的。 我认为单例设计模式可以帮助我们更...

    PHP高级程序设计-模式-框架-测试

    书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和PHP 6 的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP ...

    基于Java的控制台图书购买系统

    本系统数据存储在map集合中,采用单例模式保证了操作集合的一致性,系统分成管理员和用户两部分,若账号密码均为admin进入管理员界面,若账号密码相同则进入用户界面。功能实现了图书的添加,入库,出库等操作,用户...

    PHP高级程序设计_模式、框架与测试

    书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和PHP 6 的新特性等内容, 接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP ...

    PHP高级程序设计_模式、框架与测试 PDF及源码

    书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和PHP 6 的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP ...

    《PHP高级程序设计_模式、框架与测试》中文版PDF

    书中首先从oop采用的机制——抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和php 6的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准php库spl方面的知识以及php开发人员...

    中文版的PHP高级程序设计、模式、框架与测试第一部分共两部分

    书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和PHP 6 的新特性等内容, 接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP ...

    PHP高级程序设计_模式、框架与测试(简体中文高清版)

    书中首先从OOP 采用的机制—— 抽象类、接口、契约式编程开始讲起,然后介绍了静态方法、单例模式、工厂模式和PHP 6 的新特性等内容,接着介绍了测试和文档方面的内容,还介绍了标准PHP 库SPL 方面的知识以及PHP ...

    java设计模式选择题复习题.doc

    工厂系列模式的优缺点: 让用户的代码和某个特定类的子类的代码解耦 用户不必知道它所使用的对象是怎样创建的,只需知道该对象有哪些方法 抽象工厂模式可以为用户创建一系列相关的对象,使用户和创建这些对象的类脱...

    志远信息管理系统 V2.0.rar

    本系统基于java平台,采用设计模式:mvc(模型--视图--控制),基于接口与接口实现类,工厂模式和抽象工厂模式,单例模式,充分把系统解耦,采用的技术:jsp javabean struts hibernate,数据库:mysql struts采用struts ...

    C#本科毕业设计基于unity的餐厅经营游戏源码.zip

    在游戏的框架设计中,核心思想是用静态类来存放公用的变量和方法,也称“单例模式”。如果需要类与类之间方法的调用,则使用这个静态类作为中介,将方法放入静态类中,通过使用静态类来进行调用,这种做法大大降低...

    基于XMPP协议的IM实现

    4.User对象和Message对象采用FMDB+类java的Dao模式用静态方法固化,并且有个开发者自己写的对象to字典、字典to对象的两个超好用的方法,大家值得一看! 8.删除了XMPPManager单例中的一些废话和暂时用不着的内容...

    java面试题

    Struts1只是在第一次请求的时候创建一个action实例,以后每次相同的请求都直接从内存中去读取,它是单例模式,安全性较差。 Struts2是如何实现MVC模式的? 答:在Struts2里面是将每次页面的请求进行处理,然后将请求...

    java面试800题

    factory工厂模式、prototype原始模型模式、singleton单例模式、builder建造模式 结构模式 facade门面模式、proxy代理模式、adapter适配器(变压器)模式、composite合成模式、decorator装饰模式、bridge桥梁模式、...

Global site tag (gtag.js) - Google Analytics