1

デザイン パターンには、クラスのインスタンスが 1 つだけであることを保証する Singleton があります。

私はデザイン パターンが大好きなので、そのクラスのインスタンスが 2 つだけ必要な場合はどうすればよいか考えていました。したがって、実際のアプリケーションを無視すると、これがある場合とない場合があります。1 つのクラスのインスタンスが 2 つだけであることをどのように保証しますか?

私はそれを行う方法を自分で考えていますが、他の人が思いついたものに興味があり、誰にも偏見を持ちたくありません.

あなたの答えを説明しなさい。コードの表示も大歓迎です。

ここでも問題は、1 つのクラスのインスタンスが 2 つだけであることをどのように保証するかということです。

編集: これはただの遊びです。必ずしも、この偽のパターンを実際に適用できるわけではありません。私たち全員がグループとしてどのようなアプローチを思い付くことができるかを見たいだけです.

4

1 に答える 1

1

回答については、Effective Java (第 2 版) の項目 3:「プライベート コンストラクターまたは列挙型でシングルトン プロパティを強制する」を参照できます。

列挙型が理想的に適しているように見えますが、どちらのアプローチも固定数のインスタンスをサポートします。例えば:

public class SimpleLoadBalancer {
    private static final Random RANDOM = new Random();

    public Connection getConnection() {
        return RANDOM.nextBoolean() ?
                BinaryConnection.CONNECTION_ONE:
                BinaryConnection.CONNECTION_TWO;
    }

    public interface Connection {
        void connect();
    }

    private enum BinaryConnection implements Connection {
        CONNECTION_ONE("connection_string_one"),
        CONNECTION_TWO("connection_string_two");

        private final String connectionString;
        private BinaryConnection(String con) {
            connectionString = con;
        }

        @Override
        public void connect() {
            // some connection logic here
        }
    }
}
于 2013-11-09T19:49:40.813 に答える