パターンのプロトタイプ

プロトタイプ パターンは、ジェネレーティブ デザイン パターンのグループに属します。
私たちが出会い系アプリ Tender を開発しているとします。私たちのビジネス モデルによれば、有料で自分のプロフィールのコピーを作成し、名前や写真の順序を自動的に変更できます。これは、ユーザーがアプリケーション内でさまざまな友達のグループと複数のプロフィールを同時に管理できるようにするために行われました。
ボタンをクリックしてプロフィールのコピーを作成することで、プロフィールのコピー、名前の自動生成、写真の再並べ替えを実装する必要があります。
単純な擬似コードの実装:

fun didPressOnCopyProfileButton() {
    let profileCopy = new Profile()
    profileCopy.name = generateRandomName()
    profileCopy.age = profile.age
    profileCopy.photos = profile.photos.randomize()
    storage.save(profileCopy)
}

次に、他のチーム メンバーがコピー コードをコピーアンドペーストしたり、最初からコードを考え出したりした後、新しいフィールドが追加されたと想像してみましょう。好きです。このフィールドにはプロフィールの「いいね!」の数が保存されます。ここで、新しいフィールドを追加して、コピーが行われる *すべて* の場所を手動で更新する必要があります。コードの保守とテストは非常に時間がかかり、困難です。
この問題を解決するために、プロトタイプ設計パターンが発明されました。必要なフィールドを含むオブジェクトのコピーを返す copy() メソッドを使用して、一般的なコピー プロトコルを作成しましょう。エンティティ フィールドを変更した後は、コピー コードを含むすべての場所を手動で検索して更新するのではなく、copy() メソッドを 1 つ更新するだけで済みます。

ソース

https://refactoring.guru/ru/design-patterns/prototype

Leave a Comment

Your email address will not be published. Required fields are marked *