Java中单例实现

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 }

猜你喜欢

转载自www.cnblogs.com/thaipine/p/8999289.html
今日推荐