北京关于“静态字段_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】点解答对大家有用。