定義 (Baidu百科事典より)
プロトタイプ インスタンスを使用して、作成するオブジェクトの種類を指定し、これらのプロトタイプをコピーして新しいオブジェクトを作成します。
UMLクラス図:
詳細コード:
public class Client {public static void main(String[] args) {// Director d = new Director(new ConcreteBuilder());// d.construct();ConcretePrototype1 prototype = new ConcretePrototype1();for (int i = 0; i < 10; i++) { ConcretePrototype1 x = (ConcretePrototype1) prototype.clone(); x.test1(); } } }public class Prototype implements Cloneable {public Prototype clone() { Prototype prototype = null;try{ prototype = (Prototype)super.clone(); }catch(CloneNotSupportedException e){ e.printStackTrace(); }return prototype; } }public class ConcretePrototype1 extends Prototype {public void test1() { System.out.println(this); System.out.println("123"); } }
各部の説明:
Pro totypeプロトタイプ クラスは Cloneable インターフェイスを実装します。
ConcretePrototype1 プロトタイプ クラス Prototype のサブクラス
モードの詳細な説明:
クローン作成によってオブジェクト インスタンスをコピーします
クローンされた新しいオブジェクトは、元のインスタンスの値をコピーします
プロトタイプ モードに関する注意事項:
使用コピーするプロトタイプ モード オブジェクトはクラス コンストラクターを呼び出しません。 Objectクラスのcloneメソッドを呼び出すことでオブジェクトのコピーが完了するため、プロトタイプモードではアクセス権限も無効となります。シングルトンパターンを覚えていますか?シングルトンモードでは、コンストラクタのアクセス権限をプライベートに設定していればシングルトンを実装できます。ただし、clone メソッドはコンストラクター メソッドの権限を直接無視するため、シングルトン モードはプロトタイプ モードと競合するため、使用する場合は特に注意が必要です。
clone メソッドは浅いコピーを実行します。これは、それが参照タイプの属性である場合、コピーは行わず、参照のみをコピーすることを意味します。
長所と短所:長所:
クローンメソッドはメモリブロックを直接コピーする仮想マシンによって実行され、新しいメソッドよりもはるかに高速です
実行時にオブジェクトと対応するステータスを取得します
短所:
プロトタイプを実装する必要がありますクローン メソッド (プロトタイプの場合) オブジェクト内のプロパティ、さらにはオブジェクト内のアプリケーションの参照タイプが多数ある場合、クローン メソッドを再帰的に実装する必要があり、参照属性を追加する場合、クローンの実装が非常に複雑になります。方法が変更されます。
以上がデザインパターン プロトタイプパターン例 チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。