ホームページ >Java >&#&チュートリアル >Java-Factoryパターンの共通設計パターンの詳細説明

Java-Factoryパターンの共通設計パターンの詳細説明

高洛峰
高洛峰オリジナル
2016-12-15 13:42:151371ブラウズ

デザインパターンの原則: 言い訳プログラミングのため

ファクトリパターンの役割:

A. アプリケーションの設計において、オブジェクトの作成は一か所に集中する、または特定のクラス (スプリング) によって統合管理されます

B. In オブジェクトはアプリケーションを変更せずに直接追加できるため、オブジェクトのメンテナンスも容易になります。工場パターンのタイプ:

– ’'s's s s s s s s s s- with with with withでは、経験豊富なドライバーが、さまざまな機会にさまざまな車を運転するように運転するように指示します。 oly simple Factory:s 'sの使用を使用して使用する' s - - - - - - - - - - - - - - - swayを介して使用することを介して; //車は運転することを意図しているので、エンジンを持っています

}

implements:

package com.product.implement;

import com.product.abstruct.Car; Public void drive(){//BMW も馬ではなく車です。エンジン

}

実装; m Com.product.abstruct.car を実装します。

Public void Drive () {// アウディも車なのでエンジンが必要です// Todo Auto-Gen Eraate メソッド stub

System.out.println("はい、今日はベンツに乗っています...") }

} = ==============

ファクトリー クラス:

ファクトリー クラスは管理クラスであり、車の直接の責任者であり、この人は上司のドライバーです。 com.product.abstruct をインポートします。 CAR; Public CAR DRIVECAR(String Carname)スロー{

benz();新しいアウディを返してください ();

}}}

ある日、上司がリバプールのホームゲーム対ヴェラを観戦するためにイングランドに行きたいと言い、空港まで BMW で行く必要があるため、運転手に電話して車を開けさせました。 BMW 午後 2 時 BMW が彼を迎えに行く。 。 。

パッケージ com.product.test; パブリッククラス Test {

public static void main(String[] args) throws Exception {

// ドライバーに、今日アムステルダムまでどの車を運転するかを伝えます

Car Car = Driver .drivecar ("Benz");//ワンクリックで開始

上司のビジネスがどんどん大きくなるにつれて、彼はますます裕福になったので、フェラーリ、ポルシェなどのスポーツカーをいくつか購入しました。車の数が増えたため、すべての車を経験豊富なドライバーが管理する必要があります。年に一度の点検、保険、チケット、洗車は経験豊富なドライバーだけでは多すぎます。このとき、老人運転手は、上司がどの日にどの車を運転する必要があるかを覚えておく必要があるため、上司に「それぞれの車に運転手を雇う」と提案します。各車には専任の担当者がいます。外出する必要がある場合は、私に挨拶してください。担当者を上司に迎えに行きます。上司は躊躇せずにこう言いました。 :

package com.product.car.abstruct;

public void drive (); System.out.println("公式");

「公式のフォーサークルになります");

パッケージ com.product.car.manager; Car.abstruct.Car; .product.car.abstruct.car である必要はありません

com.product.car.implement.Audidriver をインポートします。 com.product.CarManager.Carmanager をインポートします; Plements carmanager {

public car drivecar () {

AudiDriver();新しい Mercedes-Benz ドライバーを実行しました: ; または、com.product.car.implement.benzdriver をインポートします。 ;

import com.product.manager.Carmanager C Car Drivecar () {

Return new BenzDriver();

パッケージ com.product.test;

com.product.car.abstruct をインポートします。 Car; .car.implement.benzdriver;

Import com.product.Car.Carmanager; ON {

// 車の監督者を見つけて、今日リバプールとヴィラの試合を観戦するために BMW を運転したいと言いました

自宅の電話、BMW にガソリンを入れて、BMW が来ます;

Car driveCar = carManager.driveCar();

‐ to ‐ ‐ ‐ ‐ Car driveCar = carManager.driveCar(); これら 2 つのモードとその違いを比較します。それぞれの利点:

a. 単純なファクトリには抽象クラスはなく、作成する必要があるパラメータは 1 つだけ渡され、ファクトリ クラスがそれらを均一に作成します。製品オブジェクトを作成するためのインターフェイス。このインターフェイスは、サブクラスが実装する必要があるメソッドを定義し、オブジェクトを作成するためにオブジェクト自体に渡すだけで済みます。

利点と欠点:

a.この利点は、ファクトリーの役割を変更せずに (古いドライバーを解雇したり、再割り当てしたりすることなく) 新しいメンバーを簡単に追加できることです。シンプルなファクトリの利点は、パラメータに基づいて対応するオブジェクトを作成するだけであるということですが、すべてのオブジェクトがこのクラス内で作成され、作成されたオブジェクトは事前にしか知ることができないという点も明らかです (ある日突然、上司は手動の Jetta を購入しました。上司は、私が Jetta を購入して X に配置したことを古いドライバーに通知する必要がありました。システムが As の場合、メンバー オブジェクトを追加すると、コア クラスがメソッドを追加することになります。製品内の特定の製品カテゴリの数が増え続けると、ファクトリ クラスがさまざまな条件に応じてさまざまなインスタンスを作成する必要が生じる場合があります。この種の条件の判断と特定の製品タイプの判断が絡み合っているため、モジュールの機能の拡散を避けることが困難になり、システムの保守と拡張に非常に悪影響を及ぼします

次のステップはファクトリーのアプリケーションです。アプリケーション ファクトリの設計パターンはどうすればよいでしょうか? a. 特定の製品について、呼び出し元はどの特定のファクトリ サービスを使用するか、特定のファクトリをインスタンス化して特定の製品を生成するかを明確に知っています。これは、Java コレクションの iterator() メソッドの場合に当てはまります。

b. 製品が必要なだけで、どの工場がそれを生産しているのか知りたくない、または知る必要がない、つまり、どの工場を使用するかについての最終決定は、に基づいて特定の製品をインスタンス化するプロデューサーにあります。現在のシステム状況はユーザーに返され、この意思決定プロセスはユーザーにとって透過的です。

一般的な Java デザイン パターンの詳細な説明 - ファクトリ パターン関連の記事は、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。