Aug
29
单体模式的宗旨就是:使一个类只有一个实例。
我们可以将类的constructor的可见性设置为私有来避免创建多个实例。当其他类调用该类的时候,我们可以利用getInstance()之类的方法来返回给调用者该类的实例。
比如:
1 2 3 4 5 6 7 8 9 | private Factory factory = null; public static Factory getFactory() { if (factory == null) { factory = new Facotry(); } return factory; } |
上面的例子实现了单体模式,但如果在多线程环境中采用此方式,仍然可能产生多个实例,最好的办法,用synchronized来控制Factory实例的生成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class Factory { private static Factory factory; private Factory() { } public static Factory getFactory() { synchronized(Factory.class) { if (factory == null) { factory = new Factory(); } return factory; } } } |
还没有评论。