北京 静态字段与非静态字段有什么区别,可重用设计模式有哪几种?

用户投稿 296 0

北京关于“静态字段_php”的问题,小编就整理了【2】个相关介绍“静态字段_php”的解答:

可重用设计模式有哪几种?1、单例模式

这是最常用和最常见的设计模式,几乎每个应用程序都需要用到单例模式,这种模式涉及到一个单一的类,该类负责创建自己的对象,当你需要一个对象来协调跨系统的操作时,单例模式是很好的解决方式。

顾名思义,模式用于保证一个类仅有一个实例。需要声明一个私有构造函数,以防止从类外部实例化。另外,它需要声明一个singleton类型的静态字段。

public class SingletonDemo {

private static SingletonDemo instance = null;

北京private SingletonDemo() {

public static SingletonDemo getInstance() {

北京if(instance == null) {

instance = new SingletonDemo();

return instance;

上面的代码中的getInstance()方法在运行时只创建这个类的一个实例,首选的场景:类只有一个实例,包括缓存、线程池和注册表。

单例模式的getInstance()方法并不是线程安全的。它可以被实例化不止一次,可以通过在方法上加同步调用来解决,但是这会使方法变慢。

引起类加载操作的行为有哪些?类的生命周期:

北京类从被加载到虚拟机内存中开始,到卸载出内存结束。生命周期包括:加载、验证、准备、解析、初始化、使用、卸载;其中验证、准备、解析称为连接。

加载、验证、准备、初始化、卸载,这几个阶段的顺序是确定的,类的加载过程必须按照这个顺序按部就班的开始;解析阶段不一定,某些情况下可以在初始化阶段之后再开始。

北京必须立即对类进行 "初始化" 的5种情况(虚拟机规范规定):

北京注意:加载、验证、准备阶段必须在此之前开始

北京1、遇到 new、getstatic、putstatic 或 invokestatic 这 4 条字节码指令时,如果没有进行过初始化,需要先出发其初始化;

北京生成这4条指令的最常见的 Java 代码场景是:使用 new 关键字实例化对象的时候;读取、设置一个类的静态字段(被 final 修饰,已在编译器把结果放入常量池的静态字段除外)的时候;调用一个类的静态方法的时候。

2、使用 java.lang.reflect 包的方法对类进行反射调用的时候,如果类没有进行过初始化,需要先出发其初始化;

3、当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化;

北京4、当虚拟机启动时,用户需要指定一个要执行的主类(包含 main() 方法的那个类),虚拟机会先初始化这个主类;

到此,以上就是小编对于“静态字段_php”的问题就介绍到这了,希望介绍关于“静态字段_php”的【2】点解答对大家有用。

抱歉,评论功能暂时关闭!