サーチ…


前書き

デザインパターンは、プログラマがアプリケーションやシステムを設計する際によくある問題を解決するために使用できる正式なベストプラクティスです。

設計パターンは、テスト済みで実証済みの開発パラダイムを提供することで開発プロセスをスピードアップできます。

デザインパターンを再利用することで、重大な問題を引き起こす可能性のある微妙な問題を防ぐことができ、パターンに精通したコーダーやアーキテクトのコードの可読性が向上します。

シングルトンクラスの例

Java Singleton Pattern

シングルトンパターンを実装するには、さまざまなアプローチがありますが、すべて共通の概念があります。

  • プライベートコンストラクタ。クラスのインスタンス化を他のクラスから制限します。
  • クラスの唯一のインスタンスである同じクラスのプライベート静的変数。
  • クラスのインスタンスを返すpublic staticメソッドです。これはグローバルアクセスです
  • 外部世界がシングルトンクラスのインスタンスを取得するためのポイント。
/**
 * Singleton class.
 */
public final class Singleton {

  /**
   * Private constructor so nobody can instantiate the class.
   */
  private Singleton() {}

  /**
   * Static to class instance of the class.
   */
  private static final Singleton INSTANCE = new Singleton();

  /**
   * To be called by user to obtain instance of the class.
   *
   * @return instance of the singleton.
   */
  public static Singleton getInstance() {
    return INSTANCE;
  }
}

オブザーバーパターン

オブザーバーパターンは共通のパターンであり、多くの状況で広く使用されています。実際の例はYouTubeから取ることができます:チャンネルが好きで、すべてのニュースを取得してこのチャンネルから新しい動画を見たいときは、そのチャンネルを購読する必要があります。次に、このチャンネルがニュースを公開するたびに、あなた(および他のすべてのユーザ)に通知が送信されます。

オブザーバには2つのコンポーネントがあります。 1つは放送局(チャネル)で、もう1つは受信者(あなたまたは他の加入者)です。放送業者は、それを購読しているすべての受信者インスタンスを処理します。放送事業者は新しいイベントを発生させると、これをすべての受信者インスタンスに通知します。受信者がイベントを受信すると、そのイベントに反応する必要があります(たとえば、YouTubeをオンにして新しいビデオを再生するなど)。

オブザーバパターンの実装

  1. 放送事業者は、受信者が加入契約を解除する方法を提供しなければならない。放送事業者がイベントを発生させると、イベントが発生したことを加入者に通知する必要があります。

    class Channel{
        private List<Subscriber> subscribers;
        public void subscribe(Subscriber sub) {
            // Add new subscriber.
        }
        public void unsubscribe(Subscriber sub) {
            // Remove subscriber.
        }
        public void newEvent() {
            // Notification event for all subscribers.
        }
    }
    
  2. 受信機は、放送局からのイベントを処理するメソッドを実装する必要があります。

    interface Subscriber {
        void doSubscribe(Channel channel);
        void doUnsubscribe(Channel channel);
        void handleEvent();  // Process the new event.
    }
    


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow