单例设计模式-Java

O. *_*Joy 1 java singleton design-patterns

下面的类是否实现了单例模式?我真的很困惑.

class Customer {

    static private Map costumers = new HashMap();

    private Customer() {
    }

    public static Customer getInstance(String name) {
        Customer instance = (Customer) costumers.get(name);
        if (instance == null) {
            instance = new Customer();
            costumers.put(name, instance);
        }
        return instance;

    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Jon*_*eet 13

不,它没有.抛开线程安全和类型安全问题,我可以很容易地得到两个不同的实例Customer:

Customer x = Customer.getInstance("first");
Customer y = Customer.getInstance("second");
System.out.println(x == y); // false
Run Code Online (Sandbox Code Playgroud)

因此,它不是单身人士.它是一种工厂/飞重模式混合,但它肯定不是单身模式.

  • 没有什么是个人的,但我认为对此的赞成量证明了[Jon Skeet效应](https://meta.stackexchange.com/questions/41442/jon-skeet-effect-high-reputation-users-effect). (3认同)