1。シーンの説明
ビルダーパターンは、工場パターンや抽象的な工場パターンと同じであり、継承されたクラスオブジェクトを作成するために使用されます。
工場モード:Java設計モードファクトリーモード
抽象的な工場パターン:Javaデザインパターン抽象工場パターン
違いは、工場モードでは、各サブクラスがインターフェイスを実装し、ファクトリークラスを通じてサブクラスオブジェクトを作成することです。ビルダーモードでは、各サブクラスにはビルダークラスがあり、それを通して異なる親クラスオブジェクトを作成し、最終的に多型を実装します。実際、サブクラスと親クラスはコードには存在しません。
機器データ収集ツールを工場モードで、インターフェイス「機器データ収集ツール」を定義し、サブクラス「PDFファイルデータ収集ツール」および「Excelファイルデータ収集ツール」を定義し、サブクラスにインターフェイスを実装します。サブクラスオブジェクトは、工場クラス(静的な工場クラスであろうと抽象工場クラスであろうと)を通じて作成され、これらのオブジェクトには異なる表現、つまり多型があります。
ビルダーモードでは、親クラスの「機器データ収集ツール」を定義し、「PDFファイルデータ収集ツールのビルダークラス」と「Excelファイルデータ収集ツールのビルダークラス」を使用して、異なる式(フィールドなどに異なる値を割り当てる)を割り当て、最後に多形を達成します。
ビルダーモードでは、監督は監督のようなものです。それは、クラスオブジェクトの作成を完了するためにビルダービルダーを呼び出します。下の図に示すように、発信者はディレクターに電話することができます。
もちろん、工場モデルは文字通りオブジェクトを作成するために使用されますが、ビルダーモデルは文字通り異なるオブジェクトを構築するために使用されます。 2つは同様の機能を達成できますが、2つのアプリケーションシナリオは非常に異なる場合があります。
工場モデルは、単純なクラスオブジェクトを作成するために使用され、ビルダーモデルは複雑なクラスオブジェクトを構築するために使用されます。特定の情報はBaiduから学ぶことができます。
たとえば、拡張時には、Wordファイルデータ収集を追加して、Wordファイルデータ収集プログラムの作成を実装するビルダークラスを作成します。呼び出すときは、WordBuilderクラスを使用して呼び出すことができます。
2。サンプルコード
(親)クラス:
パッケージlims.designpatterndemo.builderdemo; public class equipmentdatacapture {private string filepath; Private String EquipmentData; // public string getFilepath(){return this.filepath; } public void setfilepath(string filepath){this.filepath = filepath; } public string getequipmentData(){return this.equipmentData; } public void setequipmentData(string quiptiencedata){this.equipmentData = sequimeData; }}ビルダーインターフェイス:
パッケージlims.designpatterndemo.builderdemo; public interface quiptiondatacapturebuilder {// component void buildfilepath(); void build quipmentData(); // secipment dataCapture buildequipmentdatapture();}PDFデータ収集ビルダーカテゴリ:
パッケージlims.designpatterndemo.builderdemo; public class pdffilecapturebuilder explence dataCaptureBuilder {// sequipeddatacapture Capture; // public pdffilecapturebuilder(){capture = new quipmentDatapture(); } // @Override public void buildfilepath(){capture.setfilepath( "。pdf"); } @Override public void buildequipmentdata(){capture.setequipmentData( "PDFファイルコンテンツ"); } @Override public cultionDataCapture Build EquipmentDatacapture(){return Capture; }}データ収集ビルダーを優れています:
パッケージlims.designpatterndemo.builderdemo; public class excelfilecapturebuilder explence sequipmentdataCaptureBuilder {// seciptiondatacapture Capture; // public ExcelfileCaptureBuilder(){capture = new QuictionDatapture(); } @Override public void buildfilepath(){capture.setfilepath( "。xlsx"); } @Override public void build equipmentData(){capture.setequipmentData( "excel file content"); } @Override public cultionDataCapture Build EquipmentDatacapture(){return Capture; }}監督クラスは、監督クラスとして単純に理解できます。
パッケージlims.designpatterndemo.builderdemo; public class equipmentdataCapturedirector {public dataCapture ConstructeeqiupmentDatapture(sequipeddatacapturebuilderビルダー){builder.buildfilepath(); Builder.BuildEquipmentData();機器DataCapture Capture = builder.BuildEquipmentDatacapture();キャプチャを返します。 }}サイドの例:呼び出し:
パッケージlims.designpatterndemo.builderdemo; public class builderdemo {public static void main(string [] args){quipementDataCapturedirector direcotr = new EquipmentDatacaptureDirector();機器DatAcaptureBuilder Builder = new PdffileCaptureBuilder(); Builder = new ExcelfileCaptureBuilder();機器DataCapture Capture = direcotr.ConstructeQiupmentDatacapture(ビルダー); system.out.println(capture.getequipmentData()); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。