static实现的 singleton(单例)设计模式
/** static实现的 singleton设计模式 , 使得一个类只能够创建一个static对象 */
模板设计结构:
package Coding; public class Main_of_Coding { public static void main(String[] args) { Singleton s1=Singleton.getInstance(); Singleton s2=Singleton.getInstance(); System.out.println(s1==s2); //true } } class Singleton{ //1.首先私有构造器,使得外部的类不能够使用此构造器 private Singleton() { } //2.在类内部创建一个私有的实例对象,该对象私有(仅开放方法调用此对象),static保持此对象唯一 private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; } }
static的笔记:
/**static 修饰属性(类变量): * 1.由类创建的所有的对象,都公用这一个属性; 当其中一个对象对此属性进行修改,会导致其他对象对此进行修改 * 2.既不在栈空间,也不在堆空间, 在一块公共的静态空间. * 3.可以直接 Class名.静态变量 调用! (不同于其他变量, static变量独立于类本身存在) * 4.在自己类内调用,不用加this()! * * Static 修饰方法(基本同static 属性) */
代码:
package Coding;
public class Main_of_Coding {
public static void main(String[] args) {
Sportsman s1=new Sportsman("Jane",12);
Sportsman.show();
s1.nation="China";
System.out.println(s1.nation+ " "+Sportsman.nation);
s1.show();
}
}
class Sportsman{
String name;
int age;
static int num;//统计调用次数
static String nation;
public Sportsman(String name,int age){
this.name=name;
this.age=age;
}
static void show(){
System.out.println("调用了 "+num+"次, 这是一个静态方法! ");
num++;
}
}
运行结果:
调用了 0次, 这是一个静态方法!
China
China
调用了 1次, 这是一个静态方法!