我读过很多关于单身人士的事情,但是我不明白它是如何紧密耦合的。你能举一个小例子吗?
答案 0 :(得分:2)
来自Scott Densmore,
单身人士将你紧紧联系到单身对象的确切类型,从而消除了使用多态来代替替代方案的机会。
链接: https://blogs.msdn.microsoft.com/scottdensmore/2004/05/25/why-singletons-are-evil/
例如,如果您有一个抽象基类:
public abstract class Connection{
...
public abstract void getConnection();
}
一个实现
public class OracleConnection extends Connection{
...
@Override
public void getConnection(){
InitializeOracle();
}
}
另一个
public class PostgresConnection extends Connection{
...
@Override
public void getConnection(){
InitializePostgres();
}
}
使用单例模式,您会遇到任何原始的全局连接对象。如果要在运行时使用其中一个或两个,则会很糟糕。你不能。
根据单例的定义,上面只是在一个没有扩展的具体类中,你只有一个连接对象。不是很灵活。像这样:
final class Connection {}
public class Connection{
...
public void getConnection(){
InitializeConnection(); // you're totally stuck with this connection
}
}