静态方法 &singleton模式--(摘抄csdn论坛,作者:hhhh63(hhhh63))

原创 2004年09月02日 21:16:00

从底层来说,编译完成后主要是两个部分,一是CPU指令,这一部分包含各种方法;二是数据,也就是程序定义的各种类型的变量。运行程序实例化一个对象时,按如下方式分配内存:
1。在程序启动时将静态数据和静态方法放入堆内存中。
2。第一次实例化对象时将其它方法放入代码段中。
3。每次实例化对象时将其它数据放入栈内存中。
实例化同一个对象时,上述1、2项不动,只是再加一个第3项即可。销毁一个实例的时候,如果还有其它的实例存在,就只释放该实例的栈数据段(上述第3项)。

根据以上原理回答您的问题
静态方法和数据一般都是Public型的,用于类的极普遍的事物处理,可以在程序的任意地方调用,在整过程序运行过程中始终占用计算机内存,一搬少用。如果一个程序中的各个对象都用一个数据库的话,可以使用静态方法连接。

单件模式的实例销毁时可以释放所有的非静态方法和数据,,如果把这个类的所有方法都设计为静态的,这些方法将一直占用内存,浪费资源,不可取。

在new一个对象时,只是加一个数据段,并不重新加载方法和静态变量。

最后说一个变量传送的问题,网上很多朋友在回答类之间参数传递时都说用静态变量,我认为这种方法不好,本来加类的目的就是为了封装,如果用一个类似于全局变量的静态变量作为参数就大大削弱了封装的意义。

实际上,系统和应用程序对内存的管理相当复杂.
=======================下面摘自思归的文字

从表面上看,静态(static)成员可以通过 类名.成员名 来直接调用,而实例(instance)成员需要生成一个对象后才能调用。同一个操作,性能当然静态成员好

但其实区别是跟对象设计有关的,一般来说实例成员跟实例的状态有关,某个方法的调用可能需要访问当前对象的状态,并改变其状态,从而影响其他方法的结果

而静态成员是跟类本身有关,与单独的实例状态无关。但静态成员不要太多了,否则就沦为以前的procedural programming风格了,也许对象需要重新设计或重构。

静态成员往往会在多线程下操作,需要做同步化控制

JAVA Static方法与单例模式的理解

JAVA Static方法与单例模式的理解
  • hongshan50
  • hongshan50
  • 2014年11月03日 16:40
  • 9858

每天一题(48) - C++实现Singleton模式

饿汉模式 代码(1) //.h文件 class Singleton { public: static Singleton& GetInstance(); private: Singleton(){...
  • insistGoGo
  • insistGoGo
  • 2013年07月22日 19:37
  • 3379

java静态工厂方法与工厂模式

静态工厂方法和工厂模式很像,但是在java中还是有很大区别的。(一)静态工厂方法vs工厂模式对于一个类来说,为了让客户端获得一个自身的实例,最常用的方法就是提供一个公有的构造器。除了这种使用构造器的方...
  • QuinnNorris
  • QuinnNorris
  • 2017年03月28日 21:54
  • 880

设计模式-单例模式(Singleton)各种写法和分析比较

介绍单例模式是设计模式中比较简单容易理解的。它的出现主要是: 保证一个类仅有一个实例,并提供一个访问它的全局访问点 其实就在系统运行期间中保证只有这么一个实例,并能够全局访问。应用场景就是当需要一...
  • Card361401376
  • Card361401376
  • 2016年05月07日 23:51
  • 3803

静态方法、单例模式区别

观点一:(单例) 单例模式比静态方法有很多优势: 首先,单例可以继承类,实现接口,而静态类不能(可以集成类,但不能集成实例成员); 其次,单例可以被延迟初始化,静态类一般在第一次加载是初始化; ...
  • qq563129582
  • qq563129582
  • 2017年01月06日 23:44
  • 925

C#设计模式——单例模式(Singleton)

一、引言 最近在设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深...
  • ycl295644
  • ycl295644
  • 2015年07月06日 08:53
  • 2009

工厂模式:静态工厂模式、工厂方法模式、抽象工厂模式

一、静态工厂模式 二、工厂方法模式 san
  • QH_JAVA
  • QH_JAVA
  • 2014年11月02日 20:15
  • 2060

静态工厂模式

静态工厂、参数化工厂(parameterized factory)
  • yqj2065
  • yqj2065
  • 2013年01月31日 23:26
  • 10943

为什么要用单例模式而不是静态方法

我们在编程中最常用的模式就是单例模式了,然而单例模式都用在什么场合?为什么不用静态方法而要用单例模式呢?要搞清这些问题,需要从静态方法和非静态方法的区别和联系说起。   一、静态方法常驻内...
  • kakascx
  • kakascx
  • 2016年08月19日 00:16
  • 1763

C++设计模式5--单例模式Singleton--当前对象只有一个实例

很多情况下,我们在开发项目的过程中,都希望自己运行的某个部件只有一个实例, 比如我们天天用QT开发界面,QTCreate里帮助菜单下的关于Qt Create菜单,弹出来的关于对话框,在QTCreate...
  • gatieme
  • gatieme
  • 2014年01月08日 13:25
  • 21427
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:静态方法 &singleton模式--(摘抄csdn论坛,作者:hhhh63(hhhh63))
举报原因:
原因补充:

(最多只允许输入30个字)