您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第5章:面向对象基础】_构造方法私有化(单态设计模式/单例设计模式)
发布时间:2020-12-13 11:07:30编辑:雪饮阅读()
构造方法私有化
如果有一个类被频繁实例化并且每个实例化的构造都相同,那么就会产生好多相同的对象,占用好多堆内存空间,如果相同的对象都占用相同的堆内存空间岂不是很节约系统开支。
如果要实现这个愿景,就需要使用到构造方法私有化(也称单例设计模式或单态设计模式)。
如:
class Singleton{
//既然本类的构造不能为外部任意实例化,则外部需要的对象就由本类提前实例化准备好,然后外部每次只需要调用本类的这个instance的栈内存引用即可
//要想instance属性被外部调用而又不需要实例化则static修饰符的作用就出来了
static Singleton instance= new Singleton();
//将构造方法私有化,防止外部随意实例化导致出现多个相同对象占用堆内存空间
private Singleton(){}
public void print(){
System.out.println("hello world");
}
}
public class TestJava{
public static void main(String args[]){
//仅仅声明,不实例化是不会调用Singleton的构造方法的,也就不会因为其是私有的而报错
Singleton s1=null;
s1=Singleton.instance;
s1.print();
}
}
D:\>javac TestJava.java
D:\>java TestJava
hello world
实际上,上面这个代码还需要对instance进行封装,要获取该属性就再提供一个static的静态方法,这样做起来貌似更好点。。。
如:
class Singleton{
private static Singleton instance= new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
public void print(){
System.out.println("hello world");
}
}
public class TestJava{
public static void main(String args[]){
Singleton s1=null;
s1=Singleton.getInstance();
s1.print();
}
}
关键字词:java,面向对象,构造方法私有化,单态设计模式,单例设计模式
上一篇:【第5章:面向对象基础】_代码块