2017-01-19 8 views

答えて

2

シングルトンシングルトンオブジェクトの正確な型にしっかりとカップルあなたを、代替を置換する多型を使用する機会を取り除きます。

リンク: 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(); 
    } 
} 

シングルトンパターンを使用すると、元のグローバル接続オブジェクトに慣れてしまいます。実行時にどちらか一方または両方を使用したい場合はうんざりします。できません。

シングルトンの定義によって、上記は拡張子のない1つの具体的なクラスになり、1つの接続オブジェクトしか持たないでしょう。柔軟性はあまりありません。このように:

final class Connection {} 

public class Connection{ 
    ... 
    public void getConnection(){ 
     InitializeConnection(); // you're totally stuck with this connection 
    } 
} 
関連する問題