JAVA构造方法私有化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、对象实例化:类名对象名=new类名();
取得实例化对象:s1=Singleton.getInstance();
2、一个类的构造方法被私有化之后,则只能通过“类.方法()”取得实例化对象
举例如下,详细请看另外一个word:单例模式讲解
饿汉式:因为static变量能够在加载类时被初始化,在饿汉式中就是被=new MyBean()所以在加载类时就实例化,以后执行MyBean.getInstance()时只是引用该实例public class MyBean{
private static MyBean instance=new MyBean();//冠:在SpringMVC中,所有的类包括自定义的类在加载(也就是扫描注解的类)时默认添加类似此行的代码再加载
private MyBean(){}//私有化构造方法保证了不能使用new实例化
public static synchronized MyBean getInstance(){
return instance;
}
懒汉式:第一次执行MyBean.getInstance()时才实例化,以后执行MyBean.getInstance()时,会先判断static变量是否为null,若是则再次实例化,若不是才引用第一次的实例public class MyBean{
private static MyBean instance=null;
private MyBean(){}//私有化构造方法保证了不能使用new实例化
public static synchronized MyBean getInstance(){
if(instance==null){instance=new MyBean();}
return instance;
}
不管外部声明了多少个MyBean的对象,但是最终结果都是通过getInstance()方法取得实例化对象。此时s1、s2、s3实际上都使用了一个对象的引用:instance。