扎实的java功底系列(Effective java)3

使用私有构造器或者枚举类型强化单例模式

单例是我们常用到的设计模式之一,java中能够使用私有构造器和使用枚举类型强化单例的使用。

首先,模拟一个场景,还是车子,假设一个人有一量车,那么他要用这辆车去完成某些功能,比如送孩子上学、去买菜还是当黑车拉客,那么他都是用的一量车,并没有换车,就可以使用单例的设计模式。

public class Car {
    private int price;
    private int length;
    private int height;
    private int width;
    private String color;
    private static Car car = new Car();
    
    /**
     * 完成送孩子上学的功能,送的速度可能和价格相关(纯扯淡),实际上用接口实现,这里先不写
     */
    public void sendChildren(){
        System.out.println("您花费了"+price*3+"的时间");
    }
    
    public static Car getInstance(){
        return car;
    }
}

更好的Singleton方法:

编写一个包含单个元素的枚举类型

package serviceprovider;

public enum Car {
    thecar;
    private int price = 2;
    private int length;
    private int height;
    private int width;
    private String color;
    
    /**
     * 完成送孩子上学的功能,送的速度可能和价格相关(纯扯淡),实际上用接口实现,这里先不写
     */
    public void sendChildren(){
        System.out.println("您花费了"+price*3+"的时间");
    }
}
package serviceprovider;

public class CarTest {
    public static void main(String[] args){
        Car.thecar.sendChildren();
    }

}

thecar 就是一个完成的类型对象,能够通过它完成对象方法的调用。

虽然这种方法还没有广泛使用,但是已经成为实现Singleton的最佳方法。

posted @ 2015-07-11 15:31  loutao  阅读(1299)  评论(0)    收藏  举报