1:、经典懒汉:
代码如下:
1 package org.pine.test; 2 3 public class Person { 4 private String name; 5 private int age; 6 7 public static Person person; 8 9 private Person(){ 10 11 } 12 13 public int getAge() { 14 return age; 15 } 16 17 public void setAge(int age) { 18 this.age = age; 19 } 20 21 public String getName() { 22 return name; 23 } 24 25 public void setName(String name) { 26 this.name = name; 27 } 28 29 @Override 30 public String toString() { 31 return "Person{" + 32 "name='" + name + '\'' + 33 ", age=" + age + 34 '}'; 35 } 36 37 public static synchronized Person getInstance(){ 38 if(person==null){ 39 person = new Person(); 40 } 41 return person; 42 } 43 }
测试类:
1 package org.pine.test; 2 3 public class PersonTest { 4 5 public static void main(String[] args){ 6 Person p0 = Person.getInstance(); 7 p0.setName("张泰松"); 8 p0.setAge(27); 9 System.out.println(p0); 10 11 Person p1 = Person.getInstance(); 12 System.out.println(p1); 13 14 System.out.println(p0==p1); 15 } 16 17 }
2、经典饿汉
代码如下:
1 package org.pine.test; 2 3 public class Animal { 4 5 private int footCount; 6 7 public static /*final*/ Animal animal = new Animal(); 8 9 private Animal () { 10 11 } 12 13 public int getFootCount() { 14 return footCount; 15 } 16 17 public void setFootCount(int footCount) { 18 this.footCount = footCount; 19 } 20 21 @Override 22 public String toString() { 23 return "Animal{" + 24 "footCount=" + footCount + 25 '}'; 26 } 27 28 public static Animal getInstance(){ 29 return animal; 30 } 31 }
测试类:
1 package org.pine.test; 2 3 public class AnimalTest { 4 public static void main(String[] args){ 5 Animal a0 = Animal.getInstance(); 6 a0.setFootCount(4); 7 System.out.println(a0); 8 9 Animal a1 = Animal.getInstance(); 10 System.out.println(a1); 11 12 System.out.println(a0==a1); 13 } 14 }