この記事では、Javaが日常生活を示すためのプロトタイプモードの使用について説明します。次のように、参照のために共有してください。
1。パターン定義
プロトタイプインスタンスで作成されるオブジェクトのタイプを指定し、これらのプロトタイプをコピーして新しいオブジェクトを作成します。
2。モデルの例
1パターン分析
このモデルを説明するために、毎日の仕事の状況を使用しています。
2ストーリーライン分析図
3プロトタイプモード静的モデリング
4つのコードの例
4.1プロトタイプ作成
パッケージcom.prototype.pojo;/** *日常生活のクラス * * @author * */public class daylifeはcloneable {// construction method public daylife(){system.out.println( " - 構築方法が実行されます! - "); } //プライベート文字列getupを起動します。 //バスのプライベートストリングバイブスを取得します。 //降りて朝食のプライベートストリングgetFoodを購入します。 //正午に昼寝をします。 //午後のプライベートストリングの午後の仕事を開始します。 //仕事から降りて家に帰るプライベートストリングゴホーム。 //ナイトレジャープライベートストリングナイト; public string getGetUp(){return getUp; } public void setgetup(string getup){this.getup = getup; } public string getBybus(){return bybus; } public void setbybus(string bybus){this.bybus = bybus; } public string getGetFood(){return getFood; } public void setgetFood(String getFood){this.getFood = getFood; } public string getNoon(){return noon; } public void setnoon(string正午){this.noon = noon; } public string getafternoonwork(){return forednwork; } public void setafternoonwork(String Afternoswork){this.afternoonwork = Afternoswork; } public string getgohome(){return gohome; } public void setgohome(string gohome){this.gohome = gohome; } public string getnight(){return night; } public void set night(string night){this.night = night; } / ***日常生活情報を印刷* / public void print(){system.out.println(this.getGetup()); System.out.println(this.getBybus()); system.out.println(this.getGetFood()); system.out.println(this.getnoon()); system.out.println(this.getafternoonwork()); system.out.println(this.getgohome()); System.out.println(this.getnight()); } / ***クローンメソッド* / @Override public daylife clone(){try {//スーパークラスのクローンメソッドを呼び出す(スーパークラス?クラスは統合されていませんか?スーパークラスはどこから来ますか? } catch(例外e){} nullを返します。 }}4.2プロトタイプオブジェクトを生成する抽象的な工場を作成します
パッケージcom.prototype.factory; Import com.prototype.pojo.daylife;/** * Factory class * * @author * */public interface ilifeactory {/** * Production Daylife Object * * @return */public Daylife getNewinstance();}4.3プロトタイプオブジェクトを生成するための特定の工場を作成します
パッケージcom.prototype.factory.impl; import com.prototype.factory.ilifactory; Import com.prototype.pojo.daylife;/** * Factory実装クラス * */パブリッククラスLifeFactoryimplはIlifeFactory {// Daylife daylife = null; /** * getNewInStanceメソッドの実装: * *最初にデイライフがnullかどうかを判断します。 * NULLの場合は、DayLiftのクローンメソッドを使用して新しいオブジェクトを生成し、DayLifeオブジェクトにコピーしてから、 */ @Override Public DayLife getNewInstance(){// DayLifeがnullであるかどうかを判断します。注:これは一度だけ新しいものを使用してください! System.out.println( "New Daylife!"); // Daylife Daylife = new DayLife()のコンテンツを設定します。 daylife.setgetup( "7:00に起きる"); daylife.setbybus( "7:30でバスに乗る"); daylife.setgetFood( "GetGetGetは8:30に会社の近くのバス停で降ります。道路の隣で朝食車を通過すると、朝食を購入して一緒に会社に持ち込みます」); daylife.setnoon(「昼食は会社の近くの小さなレストランで解決され、その後オフィスシートで昼寝をします」); daylife.setafternoonwork( "13:30の午後の仕事を始めた"); daylife.setgohome( "17:30は時間通りに仕事をしました"); daylife.setnight( "Evening Entertainment"); } else {// null //出力は、cloneメソッドsystem.out.println( "clone daylife!")を使用して生成されたオブジェクトです。 //クローンオブジェクトをDayLifeに割り当て、DayLife = DayLife.Clone()を返します。 } daylifeを返します。 }}4.4毎日の作業シナリオディスプレイ
package com;import com.prototype.factory.ILifeFactory;import com.prototype.factory.impl.LifeFactoryImpl;import com.prototype.pojo.DayLife;/** * Main application* * @author * */public class Client { public static void main(String[] args) { // Create factory ILifeFactory lifeFactory = new LifeFactoryImpl(); // DayLife Default Content LifeFactory.getNewInstance()。print(); // DayLifeをもう一度取得し、GetUpコンテンツと出力コンテンツを変更します System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- daylife2.setgetup(私は午前中にベッドに滞在しました!実行結果
新しいデイライフ!
- 建設方法が実行されました! -
7:00に起きます
7:30にバスに乗ってください
8:30に会社の近くのバス停で降りてください。道路の隣の朝食車で通り過ぎるとき、朝食を買って昼食のために会社に持って行きます。その後、オフィスシートで昼寝をします。
午後の作業は13:30に始まりました
17:30に時間通りに仕事をして、夜に楽しんでください
---------------------------------
クローンデイライフ!
朝ベッドにとどまる!起きる前に7 :: 15!
7:30にバスに乗ってください
8:30に会社の近くのバス停で降りてください。道路の隣の朝食車で通り過ぎるとき、朝食を買って昼食のために会社に持って行きます。その後、オフィスシートで昼寝をします。
午後の作業は13:30に始まりました
17:30に時間通りに仕事をして、夜に楽しんでください
3。このモデルの元の設計
1オブジェクトのクローンを作成するときにオブジェクトのコンストラクターメソッドは実行されません
2浅いコピーとディープコピー
4.機会を使用します
1カウンターパートを生成するプロセスは比較的複雑であり、初期化には多くのリソースが必要です。
2フレームワークのプロトタイプと生成されたオブジェクトを分離する場合
3同じオブジェクトに同時に他の発信者がアクセスできる場合
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。