黑马程序员技术交流社区
标题:
编写一个延迟加载的单例设计模式
[打印本页]
作者:
张凡
时间:
2013-9-8 17:06
标题:
编写一个延迟加载的单例设计模式
以下代码怎么说明延迟加载和单例设计模式
public class Test8{
static class People{
private String name;
private String sex;
private int age;
private People(String name,String sex,int age){
super();
this.name=name;
this.sex=sex;
this.age=age;
}
public static People p=null;
public static People getPeople(){
synchronized (People.class){
if(p==null){
p=new People("zhangfan","女",22);
}
}
return p;
}
public String toString() {
return "姓名:"+name+" 年龄: "+age;
}
}
public static void main(String[] args) {
People p1=People.getPeople();
People p2=People.getPeople();
People p3=People.getPeople();
System.out.println(p1);
System.out.println(p2);
System.out.println(p3);
}
}
作者:
杨增坤
时间:
2013-9-8 17:20
public class Test8{
static class People{
private String name;
private String sex;
private int age;
private People(String name,String sex,int age){//构造方法私有化,只能子在本类中对此类进行实例对象,在其他的类中不能对类进行实例化,然后通过创建方法返回在本类中实例的对象。这就是单例设计模式,
super();
this.name=name;
this.sex=sex;
this.age=age;
}
public static People p=null; //首先给声明一个对象,,但是实例化,给其一个空值。
public static People getPeople(){
synchronized (People.class){
if(p==null){
p=new People("zhangfan","女",22);//在方法中对声明的对象,进行实例化,在判断条件成立的前提下。只要类一加载,对象不会实例化,必须调用获得对象的方法才能实例化此对象,这就是延迟加载
}
}
return p;
}
public String toString() {
return "姓名:"+name+" 年龄: "+age;
}
}
public static void main(String[] args) {
People p1=People.getPeople();
People p2=People.getPeople();
People p3=People.getPeople();
System.out.println(p1);
System.out.println(p2);
System.out.println(p3);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2