オブジェクト指向のプログラミングプログラミングでは、最も一般的な操作は新しいオブジェクトですが、新しいオブジェクトを作成するプロセスでは、新しいオブジェクトの作成の詳細に注意を払う必要があるなど、いくつかの問題があります。工場のパターンと抽象的な工場パターンの出現は、この問題を完全に解決し、オブジェクトの作成を気にせず、ビジネスの実装により焦点を合わせることができます。
特徴:
1.プログラマーは、工場メソッドを介して直接オブジェクトを作成し、オブジェクトの作成の詳細に注意を払っていません。
2。オブジェクトの実装の詳細を隠すことも、プログラムのセキュリティを助長します。
3。プログラムの結合度を削減します。
エンタープライズレベルの開発と一般的なフレームワークのアプリケーション:
HibernateのSessionFactoryなど
工場モデルの分類:
プログラム開発で最も一般的に使用される形式であるシンプルな工場モデル、特定のコードは次のとおりです。
パブリッククラスデモ{ /***デモクラスは通常の操作クラスです。このクラスでは、車の作成の実装の詳細を気にする必要はありません*/ public static void main(string [] args){car car = carfactory.createcar( "dz"); car.run(); car car2 = carfactory.createcar( "at"); car2.run(); }} interface car {public void run();} class dzを実装します{public void run(){system.out.println( "volkswagen is running"); }} class at emplments car {public void run(){system.out.println( "alto car is running"); }} class carfactory {public static car createcar(string type){if( "dz" .equals(type)){system.out.println( "volkswagen car");新しいdz()を返します。 } if( "at" .equals(type)){system.out.println( "Alto Car"を作成した "); new at(); } nullを返します。 }}ファクトリーメソッドモードは、単純な工場モードよりも拡張が容易であり、以前のコードを変更する必要はありません。
パブリッククラスデモ{ /***デモクラスは通常の操作クラスです。このクラスでは、車の作成の実装の詳細を気にする必要はありません*/ public static void main(string [] args){atfactory atfactory = new atfactory(); dzFactory dzfactory = new dzfactory(); car at = atfactory.createcar(); car dz = dzfactory.createcar(); at.run(); dz.run(); }} interface car {public void run();} class dzを実装します{public void run(){system.out.println( "volkswagen is running"); }} class at emplments car {public void run(){system.out.println( "auto car is running"); }} interface carfactory {car createcar();} class dzfactoryはcarfactory {public carecar(){return new dz(); }} class atfactoryはcarfactoryを実装します{public car createcar(){return new at(); }}抽象的な工場メソッドパターン:
public class demo {public static void main(string [] args){car carfactory = new gdcarfactory(); fdz fdz = carfactory.createfdz(); fdz.zhuansu(); }} interface fdz {void zhuansu();} class gdfdzはfdz {public void zhuansu(){system.out.println( "ハイエンドエンジン速度"); }} class ddfdzはfdzを実装します{public void zhuansu(){system.out.println( "ローエンドエンジン速度遅い"); }} interface zy {void shushidu();} class gdzyはzy {public void shushidu(){system.out.println( "ハイエンドシートは快適です"); }} class ddzyはzy {public void shushidu(){system.out.println( "ローエンドシートは不快"); }} interface lt {void mosundu();} class gdltを実装します{public void mosundu(){system.out.println( "ハイエンドタイヤは摩耗しない"); }} class ddltを実装します{public void mosundu(){system.out.println( "ローエンドタイヤが速く摩耗します"); }} interface car {fdz createfdz(); zy createzy(); lt createlt();} class gdcarfactoryは車を実装します{@override public fdz createfdz(){return new gdfdz(); } @override public zy createzy(){return new gdzy(); } @Override public lt createlt(){return new gdlt(); }} class ddcarfactory emplmess car {@override public fdz createfdz(){return new ddfdz(); } @Override public zy createzy(){return new ddzy(); } @Override public lt createlt(){return new ddlt(); }}3つの方法の比較:
1.シンプルな工場モード:シンプルな工場モードの設計はシンプルで、コードボリュームが小さいが、スケーラビリティが低い。拡張する必要がある場合は、前のコードを変更する必要があります。
2。工場メソッドモード:強力なスケーラビリティですが、コードの複雑さを増加させます
3。抽象的な工場モデル:抽象的な工場モデルと工場モデルは異なります。抽象的な工場モデルは製品をグレードに分割しますが、工場モデルは製品を分類することです。車の例を挙げると、工場モデルはアウディやフォルクスワーゲンなどのさまざまな種類の車を生産することですが、抽象的な工場モデルは同じ車をグレードに分割します。たとえば、フォルクスワーゲンの両方、ハイエンド車とローエンドの車を分割します。方法論的な観点から、抽象的な工場パターンは、工場パターンの改良に似ています。 1つは異なる製品を対象としており、もう1つは同じ製品ファミリを対象としています。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。