デザインパターンの「プロトタイプパターン」

プロトタイプパターンとは

プロトタイプ パターンは、コードを最初から作成することなく、既存のオブジェクトを使用して新しいオブジェクトを作成できる創造的なデザイン パターンです。Java では、プロトタイプ パターンはオブジェクトをコピーするための Cloneable インターフェイスを実装できます。プロトタイプ パターンは、オブジェクトのクローン作成の責任をプロトタイプ オブジェクトに委任するため、ファクトリ メソッドのようにオブジェクトが作成されるたびにオブジェクトを再初期化する必要がなくなります。

プロトタイプパターンを使用する理由

プロトタイプ パターンを使用すると、コードを最初から作成する必要がなく、時間とリソースを節約できます。既存のオブジェクトを使用して新しいオブジェクトを作成することにより、プロトタイプ パターンのパフォーマンスが向上し、メモリ消費量が削減されます。また、プロトタイプ パターンは、必要に応じてインスタンスを動的に作成できるため、オブジェクトを作成するためのより柔軟な方法を提供します。

仕事のどこで使いますか

Android 開発では、新しいアクティビティまたはフラグメントのインスタンスを作成するためにプロトタイプ パターンがよく使用されます。たとえば、基本的なアクティビティまたはフラグメントを作成し、その中で必要なプロパティとメソッドをいくつか定義できます。次に、この基本インスタンスをプロトタイプとして使用し、プロトタイプ インスタンスのプロパティとメソッドをコピーすることで新しいインスタンスを作成できるため、新しいインスタンスを作成する作業負荷が軽減されます。
たとえば、アプリケーション内で同様の機能と UI スタイルを持つ複数の Fragment インスタンスを作成する必要がある場合、基本的な Fragment インスタンスを作成し、それをプロトタイプとして定義できます。次に、プロトタイプ パターンを使用してこの基本インスタンスをコピーし、必要に応じていくつかのプロパティとメソッドを変更して、新しいフラグメント インスタンスを作成します。

デザインのアイデア

プロトタイプ パターンの設計上の考え方は、プロトタイプ オブジェクトを作成し、それを複製して他のオブジェクトを作成することです。プロトタイプ オブジェクトは Cloneable インターフェイスを実装しているため、その clone() メソッドを使用して新しいオブジェクトを作成できます。Java では、プロトタイプ パターンは通常、Object クラスの clone() メソッドを使用して実装されます。

プロトタイプ パターンのコード実装

簡単な例を使用して、プロトタイプ パターンの実装を示します。id プロパティと name プロパティを含む User クラスを作成します。プロトタイプ オブジェクトを作成し、それを使用して他のユーザー オブジェクトを作成します。完全な Java クラスのコード例を次に示します。

public class User implements Cloneable {
    
    
  private int id;
  private String name;

  public User(int id, String name) {
    
    
    this.id = id;
    this.name = name;
  }

  public int getId() {
    
    
    return id;
  }

  public void setId(int id) {
    
    
    this.id = id;
  }

  public String getName() {
    
    
    return name;
  }

  public void setName(String name) {
    
    
    this.name = name;
  }

  @Override
  protected Object clone() throws CloneNotSupportedException {
    
    
    return super.clone();
  }
}

上記のコードでは、Cloneable インターフェイスを実装し、 clone() メソッドをオーバーライドしてプロトタイプ パターンを実装しました。次に、このプロトタイプ オブジェクトを使用して他のオブジェクトを作成します。

public class PrototypeApp {
    
    
  public static void main(String[] args) throws CloneNotSupportedException {
    
    
    User prototype = new User(1, "John");

    User user1 = (User) prototype.clone();
    user1.setId(2);

    User user2 = (User) prototype.clone();
    user2.setId(3);

    System.out.println("Prototype User: " + prototype.getId() + " - " + prototype.getName());
    System.out.println("User 1: " + user1.getId() + " - " + user1.getName());
    System.out.println("User 2: " + user2.getId() + " - " + user2.getName());
  }
}

上記のコードでは、プロトタイプ オブジェクトを作成し、それを使用して User オブジェクトを作成しました。clone() メソッドを使用してプロトタイプ オブジェクトのクローンを作成し、新しい id プロパティを設定します。次に、各ユーザー オブジェクトの id 属性と name 属性を出力します。出力は次のとおりです。

Prototype User: 1 - John
User 1: 2 - John
User 2: 3 - John

要約する

プロトタイプ パターンは非常に便利な創造的なデザイン パターンであり、コードを最初から作成する必要がなく、時間とリソースを節約できます。既存のオブジェクトを使用して新しいオブジェクトを作成することにより、プロトタイプ パターンのパフォーマンスが向上し、メモリ消費量が削減されます。また、プロトタイプ パターンは、必要に応じてインスタンスを動的に作成できるため、オブジェクトを作成するためのより柔軟な方法を提供します。したがって、プロトタイプ パターンは、オブジェクトを繰り返し作成する必要がある場合に非常に優れたソリューションです。

おすすめ

転載: blog.csdn.net/weixin_45112340/article/details/129663094