.NET シンプル ファクトリ パターンの説明
シンプル ファクトリ パターンの紹介:
シンプル ファクトリ パターンは、静的ファクトリ メソッド パターンとも呼ばれる作成パターンですが、23 の GOF デザイン パターンの 1 つではありません。単純なファクトリ パターンでは、ファクトリ オブジェクトを使用して、どの製品クラス インスタンスを作成するかを決定します。シンプル ファクトリ パターンは、ファクトリ パターン ファミリの中で最も単純かつ最も実用的なパターンであり、さまざまなファクトリ パターンの特別な実装として理解できます。
構造パターン図:
役割分類:
ファクトリ (作成者) ロール
単純なファクトリ パターンの中核であり、すべてのインスタンスを作成する内部ロジックの実装を担当します。ファクトリ クラスでプロダクト クラスを作成するメソッドは、外部から直接呼び出して、必要なプロダクト オブジェクトを作成できます。
抽象的な製品の役割
単純なファクトリ パターンによって作成されたすべてのオブジェクトの親クラスは、すべてのインスタンスに共通のパブリック インターフェイスを記述する役割を果たします。
Concrete Product ロール
は、単純なファクトリ パターンの作成ターゲットです。作成されるすべてのオブジェクトは、このロールを実行する特定のクラスのインスタンスです。
実際の状況を紹介します:
テナント管理システムがある場合、その中のテナントタイプは可変であり、テナントタイプごとに家賃の計算式が異なります
タイプAのテナントの家賃金額 = 日数*単価+実績*0.005
B型世帯賃料=月*(月額+実績*0.001)
分析:
1 これが実店舗の行動です。ですが、動作が異なるので、ストア クラスを抽象化します。コードは次のとおりです。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SimpleFactory.App.IFactroy { public interface Ishop { double Getrent(int days, double dayprice, double performance); } }
2. ストアを抽象化した後、特定の製品クラスを作成する必要があります。特定のタイプのストア。ストアの動作メソッドを実装します。タイプ A のストアを作成します
using SimpleFactory.App.IFactroy; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SimpleFactory.App.product { //A类型的商店的创建 public class Ashop:Ishop { /// <summary> /// /// A类型商店租金额,天数*单价+绩效*0.005 /// </summary> /// <param name="days">天数</param> /// <param name="dayprice">每天单价</param> /// <param name="performance">日平均绩效</param> /// <returns></returns> public double Getrent(int days, double dayprice, double performance) { Console.WriteLine("A商店的租金算法"); return days * dayprice + performance * 0.01; } } }
3. タイプ B のストアを作成します:
using SimpleFactory.App.IFactroy; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SimpleFactory.App.product { /// <summary> /// B类型的商店的创建 /// </summary> public class Bshop:Ishop { /// <summary> /// B类型商店的租金=月份*(每月价格+performance*0.001) /// </summary> /// <param name="month">月数</param> /// <param name="monthprice">月单价</param> /// <param name="performance">月平均绩效</param> /// <returns></returns> public double Getrent(int month, double monthprice, double performance) { Console.WriteLine("B商店的租金算法"); return month * (monthprice + performance * 0.001); } } }
4. タイプ ストアを作成してメソッドを実装した後、その種のオブジェクトを作成する方法を検討します。どのような状況で、単純なファクトリ パターンのコア部分であるファクトリ クラスが登場しました
using SimpleFactory.App.IFactroy; using SimpleFactory.App.product; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SimpleFactory.App.factoryMethod { public class factorymethod { public Ishop CreateShow(string show) { switch (show.Trim().ToLower()) { case"ashop": return new Ashop(); case "bshop": return new Ashop(); default: throw new Exception("该商店不存在"); } } } }
5. 次に、現在のストア タイプに基づいて、このタイプのストアにどのアルゴリズムを使用するかを判断します:
using SimpleFactory.App.factoryMethod; using SimpleFactory.App.IFactroy; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SimpleFactory.App { class Program { static void Main(string[] args) { Ishop As; factorymethod afm = new factorymethod(); As = afm.CreateShow("ashop"); //a 类型的某商店 double total = As.Getrent(30, 300, 2000); //30 天/100元 日平均绩效为2000 Console.WriteLine("该A类型商店的租金为:" + total); Console.WriteLine("============="); Ishop Bs; factorymethod bfm = new factorymethod(); Bs = bfm.CreateShow("bshop"); //b 类型的某商店 total = Bs.Getrent(3, 3000, 60000); //3 月/4000元 月平均绩效为60000 Console.WriteLine("该B类型商店的租金为:" + total); Console.ReadKey(); } } }
ここでは、顧客が必要とする 2 つのタイプのストアのアルゴリズム要件を実装しましたが、優れた設計アーキテクチャとして、顧客が C タイプのストアと D タイプのストアを追加した場合のその後の需要の変化も考慮する必要があります。 -type ストア、それらのアルゴリズム要件は異なります。この時点で、C および D タイプ ストアを作成し、Ishop インターフェイスを継承し、内部のメソッドを実装する必要があります。同時に、ファクトリ クラスの変更と追加を続ける必要があります。対応するストアをキャプチャして作成するように切り替える場合、そのような状況が発生すると、プログラムのスケーラビリティとその後のプロジェクトのメンテナンスに役立ちません。
利点:
単純なファクトリ パターンは、外部から与えられた情報に基づいてオブジェクトの特定のクラスを作成するかを決定できます。これにより、外部の世界は特定の製品オブジェクトを直接作成するという恥ずかしい状況を取り除くことができます。
外の世界は特定のクラスから隔離されており、偶然性が低い。
それぞれの責任と権限を明確に区別することで、ソフトウェア アーキテクチャ全体の最適化に役立ちます。
短所:
ファクトリクラスはすべてのインスタンスの作成ロジックを集中させているため、GRASPRの高い凝集性の責任割り当て原則に簡単に違反します
単純なファクトリパターンは特定の変更に適応できますが、解決できる問題は限定的ではありません。 。作成できるクラスは事前に考慮する必要があります。新しいクラスを追加する必要がある場合は、ファクトリ クラスを変更する必要があります。
生じた控訴状況をどのように解決するかは考える価値があり、次のファクトリーメソッドパターンでうまく解決されます。
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











コードの再利用性を向上させるために PHP でシンプル ファクトリ パターンを適用する方法 シンプル ファクトリ パターン (SimpleFactoryPattern) は、オブジェクトを作成するときに統一されたインターフェイスを提供し、さまざまな条件に応じて異なるオブジェクトを作成できるようにする、一般的に使用されるデザイン パターンです。このモードでは、コードの結合を効果的に削減し、コードの保守性と再利用性を向上させることができます。 PHP では、単純なファクトリ パターンを使用して、コードの構造とロジックを最適化できます。シンプル ファクトリ パターンを理解する シンプル ファクトリ パターンは 3 つで構成されます

PHP オブジェクト指向のシンプル ファクトリ モデルを通じてオブジェクトのバージョン管理と管理を実装する方法 大規模で複雑な PHP プロジェクトを開発する場合、バージョン管理と管理は非常に重要です。適切な設計パターンを通じて、オブジェクトの作成と使用をより適切に管理および制御できるため、コードの保守性と拡張性が向上します。この記事では、PHP オブジェクト指向のシンプルなファクトリ パターンを使用してオブジェクトのバージョン管理と管理を実装する方法を紹介します。シンプル ファクトリ パターンは、ファクトリ クラスを通じて指定されたオブジェクトをインスタンス化するクラスを作成するための設計パターンです。

PHP でシンプル ファクトリ パターンを適用してオブジェクトの作成を自動化する方法 シンプル ファクトリ パターンは、オブジェクトの作成に使用される一般的なデザイン パターンであり、オブジェクトのインスタンス化のプロセスを抽象化します。 PHP では、単純なファクトリ パターンを適用すると、オブジェクトの作成と特定の実装を切り離すことができ、コードがより柔軟で保守しやすくなります。この記事では、例を使用して、PHP でシンプル ファクトリ パターンを適用する方法を説明します。携帯電話やテレビを販売する電気店があるとします。ユーザーの選択に基づいて写真を作成する必要があります

PHP のオブジェクト指向のシンプル ファクトリ パターンを通じてオブジェクトのポリモーフィズムを実現する方法 シンプル ファクトリ パターンは、共通のファクトリ クラスを通じてさまざまなタイプのオブジェクトを作成し、オブジェクト作成プロセスを隠すことができる一般的な設計パターンです。 PHP オブジェクト指向のシンプルなファクトリ パターンは、オブジェクトのポリモーフィズムを実現するのに役立ちます。単純なファクトリ パターンには、ファクトリ クラス、抽象クラス、具象クラスという 3 つの基本的な役割が含まれています。まず、抽象メソッドsay()を含む抽象クラスAnimalを定義します。

Java ファクトリ パターンの原理とアプリケーションの詳細な説明 ファクトリ パターンは、オブジェクトを作成し、オブジェクト作成プロセスをカプセル化するために使用される、一般的に使用される設計パターンです。 Java でファクトリ パターンを実装する方法は数多くありますが、最も一般的なのは、単純なファクトリ パターン、ファクトリ メソッド パターン、および抽象ファクトリ パターンです。この記事では、これら 3 つのファクトリ パターンの原理と応用を詳しく紹介し、対応するコード例を示します。 1. シンプル ファクトリ パターン シンプル ファクトリ パターンは、最も単純で最もよく使用されるファクトリ パターンです。ファクトリ クラスを使用して、渡されたパラメータに基づいてさまざまな値を返します。

PHP オブジェクト指向のシンプル ファクトリ パターンを使用してテスト可能なオブジェクト インスタンスを作成する方法 シンプル ファクトリ パターンは、さまざまな条件に基づいてさまざまなオブジェクト インスタンスを作成するのに役立つ一般的に使用されるソフトウェア設計パターンです。 PHP オブジェクト指向プログラミングでは、単純なファクトリ パターンを組み合わせることで、コードのテスト容易性と保守容易性を向上させることができます。この記事では、PHP のオブジェクト指向のシンプルなファクトリ パターンを使用して、テスト可能なオブジェクト インスタンスを作成する方法を学びます。このプロセスを簡単な例で説明します。まず、を表すインターフェイスを定義しましょう。

PHP オブジェクト指向の単純なファクトリ パターンを通じてオブジェクトのカプセル化と隠蔽を実現する方法 はじめに: PHP オブジェクト指向プログラミングでは、カプセル化はデータ隠蔽を実現するための重要な概念です。カプセル化では、データと関連する操作をクラス内にカプセル化し、外部に公開されるパブリック インターフェイスを通じてデータを操作できます。シンプル ファクトリ パターンは、オブジェクトの作成によく使用されるデザイン パターンで、オブジェクトの作成と使用を分離することで、システムをより柔軟で拡張しやすくします。この記事ではサンプルコードを組み合わせて、PHPで簡単なオブジェクト指向ファクトリパターンを実装する方法を紹介します。

Java ファクトリ パターンはオブジェクトを作成するための設計パターンであり、オブジェクト作成プロセスを抽象化して、実行時にどの特定のクラスをインスタンス化するかを決定できるようにします。インスタンス化ロジックをクライアント コードから分離することで、コードの保守性、柔軟性、拡張性が向上します。ファクトリ パターンには、単純なファクトリ パターン、ファクトリ メソッド パターン、および抽象ファクトリ パターンという 3 つの一般的なバリアントがあります。これら 3 つの亜種については以下で詳細に分析し、具体的なコード例を示します。 1. シンプル ファクトリ パターン シンプル ファクトリ パターン (SimpleFac)
