デザインパターン プロトタイプパターン例 チュートリアル

零下一度
リリース: 2017-06-27 10:26:33
オリジナル
1135 人が閲覧しました

定義 (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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート