1。シーンの説明
「Javaデザインパターン(i)工場パターン」に関連する
工場モデルの欠点の1つは、クラスの閉鎖の原則を破壊することです。たとえば、単語ファイルにデータ収集を追加する必要がある場合は、次の手順に従ってください。
ステップ2工場クラスを変更しました。追加の実装クラスごとに工場クラスを変更する必要がある場合、これは不合理です。
解決策は、抽象的な工場クラスを使用し、各実装クラスの工場クラスを作成し、各工場クラスがインターフェイスを実装するように工場インターフェイスを追加することです。
抽象工場を使用した後、上記の手順は次のように変更されます。
変更後、工場クラスが抽象化され、工場インターフェイスが定義されているため、新しい実装クラスを追加するときに元のコードを変更する必要はなく、元の実装は破壊されません。
下の図に示すように:
2。サンプルコード
機器データ収集インターフェイス:
パッケージlims.designpatterndemo.abstractfactorydemo; public interface quipmentdataCapture {public string capture(string filepath);}PDFファイルコレクションクラス:
パッケージlims.designpatterndemo.abstractfactorydemo; public class pdffilecaptureは機器datapture {@override public string capture(string filepath){return "pdf file content"; }}Excelファイルコレクションクラス:
パッケージlims.designpatterndemo.abstractfactorydemo; public class excelfilecaptureは、機器datacapture {@override public string capture(string filepath){return "excel file content"; }}抽象工場、つまり工場インターフェイス:
パッケージlims.designpatterndemo.abstractfactorydemo; public interface quiptiondataCaptureFactory {public quipementDataCapture getCapture(); }PDFファイルコレクションファクトリー:
パッケージlims.designpatterndemo.abstractfactorydemo; public class pdffilecapturefactory emplicementDataCaptureFactory {@Override public cultiveDataCapture getCapture(){return new pdffilecapture(); }}Excel File Collection Factory:
パッケージlims.designpatterndemo.abstractfactorydemo; public class excelfilecapturefactory empliceddataCaptureFactory {@Override public compuitydataCapture getCapture(){return new ExcelfileCapture(); }}コール例:
パッケージlims.designpatterndemo.abstractfactorydemo; public class abstractfactorydemo {public static void main(string [] args){quipmentDatacaptureFactory Fabric = new PdffileCaptureFactory(); fabric = new ExcelfileCaptureFactory();機器DataCapture Capture = FABRIC.GETCAPTURE(); string filecontent = capture.capture( ""); System.out.println(filecontent); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。