Singletone模式为什么说会引起耦合

最近在学设计模式,看了banq大哥的Singletone模式文章和网上的一些文章及争论。发觉其中的争论无非有两点:

1.多线程情况下容易引起混乱,返回多个实例

2.用了singletone会引起类之间的耦合

对于第一个问题比较好理解,但第二个问题我有点想不清楚,为什么说用了Singleton会引起类之间的耦合呢?

如果是这样的话,能够有什么别的解决方法吗?

饿汉式 貌似没有多线程问题吧
public class EagerSigleton(){
private static final EagerSigleton m_instatnce=new EagerSigleton();
//私有构造方法
private EagerSigleton(){

}
//静态工厂方法
public EagerSigleton getInstance(){
return m_instatnce;
}
}

一下子发了两贴,怎么回事...
[该贴被fnet于2008-01-06 10:58修改过]

1.创建singleton有两种方式 大家所谓的产生多个对象,是方法没有加同步引起的.


2.singleton会引起偶合么?不觉得
使用模式就是为了解偶

耦合(coupling)是元素与其它元素的连接。单态模式中的对象是全局唯一,也正是因为这样的唯一性,而被多个元素(类、模块或系统)所关联,换句话说,单态模式的对象有所变化,就会对引用它的对象造成影响。如此看来,单态模式是会造成较多的偶合。
另外,Singletone是GOF23种模式中的一种,而GOF模式并不等同于所有的设计模式。在《Applying UML and Pattens》一书中就提出了GRASP模式,其实这些模式都是OO中很普通的很基本的设计原则,例如,低耦合和高内聚就是其中之一,而在具体软件之中采用什么样的设计模式,是依据具体情况而定的。而《Applying UML and Pattens》也同样指出,低耦合和高内聚的用于评价欧选方案的模式,并非是软件设计之中必须遵循的。有时候,在特定的情况下,为了迎合其他优势,适当整加耦合是允许的,所以使用Singletone并不矛盾。