IRONSOFTWAREHOME
開発者向けアップデート

Factory Pattern C#(開発者向けの動作方法)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月23日

C#におけるファクトリパターンは、デザインパターンのカテゴリに属する構造的アプローチです。 C#でのファクトリメソッドデザインパターンは、作成されるオブジェクトの正確な生成クラスを指定せずにオブジェクトを作成する問題を解決することを目的としています。

基本的に、ファクトリパターンはオブジェクトの作成を特定のクラス(ファクトリクラスと呼ばれる)に委任することで対処します。 これにより、システムをより柔軟で管理しやすくすることができ、新しいタイプのオブジェクトを導入する際に特に有用です。ファクトリクラスがオブジェクト作成プロセスを管理し、具体的なクラスへの依存を減らします。 C#での生成的デザインパターンであるファクトリメソッドパターンをどのように実装して使用できるかを探ってみましょう。 後ほど、IronPDF PDF生成ライブラリを探っていきます。

基本的なファクトリメソッドパターンの構造

ファクトリメソッドパターンの核心となるアイディアは、オブジェクトを作成するための共通のインターフェースを定義しながら、サブクラスが作成するオブジェクトのタイプを変更できるようにすることです。 このパターンはいくつかの主要なコンポーネントを含みます:

-**製品インターフェイス:**ファクトリ メソッドによって作成されたオブジェクトの構造を指定します。 -**具体的な製品クラス:**製品インターフェースを実装します。

  • **Creator クラス (抽象クラス Creator):**製品インターフェイスのオブジェクトを返すファクトリ メソッドを宣言します。
  • **Concrete Creator:**具体的な製品のインスタンスを提供するファクトリ メソッドを変更します。

例:車両ファクトリ

車やトラックのような異なるタイプの車両があるシナリオを考えてみましょう。 ユーザー入力または構成ファイルに基づいて異なる種類の車両を作成できる車両ファクトリを作成するためにファクトリパターンを使用します。

ステップ 1: 製品インターフェースを定義します

public interface IVehicle
{
    // Method to display information about the vehicle
    void DisplayInfo();
}

ステップ 2: 具体的製品を実装します

public class Car : IVehicle
{
    // Displays Car specific information
    public void DisplayInfo()
    {
        Console.WriteLine("This is a Car.");
    }
}

public class Truck : IVehicle
{
    // Displays Truck specific information
    public void DisplayInfo()
    {
        Console.WriteLine("This is a Truck.");
    }
}

ステップ 3: 抽象生成者クラスを作成します

public abstract class VehicleFactory
{
    // Factory Method to create a vehicle instance
    public abstract IVehicle CreateVehicle(string type);
}

ステップ 4: 具体的生成者を実装します

public class ConcreteVehicleFactory : VehicleFactory
{
    public override IVehicle CreateVehicle(string type)
    {
        // Create vehicle based on type
        switch (type.ToLower())
        {
            case "car": return new Car();
            case "truck": return new Truck();
            default: throw new ArgumentException("Invalid vehicle type");
        }
    }
}

ステップ 5: クライアントコードの使用

class Program
{
    static void Main(string[] args)
    {
        // Create factory instance
        VehicleFactory factory = new ConcreteVehicleFactory();

        // Create a Car and display its info
        IVehicle car = factory.CreateVehicle("car");
        car.DisplayInfo();

        // Create a Truck and display its info
        IVehicle truck = factory.CreateVehicle("truck");
        truck.DisplayInfo();
    }
}

上記の例では、VehicleFactoryクラスが抽象生成者として機能し、ConcreteVehicleFactoryクラスがファクトリメソッドCreateVehicleを実装する具体的な生成者です。 このメソッドは、受け取った入力に基づいて作成する車両の種類を決定します。 クライアントコードは、オブジェクト作成ロジックとクライアントコードの間のカップリングを緩くし、異なる車両インスタンスを作成するためにファクトリを使用します。

ファクトリーパターン C# (開発者向けの仕組み): 図1 - ファクトリーデザインパターン出力

ファクトリパターンを使用する利点

ファクトリパターンは特に複雑なシステムで様々な利点を提供します:

-**疎結合:**クライアント コードは、具体的な製品クラスではなく、インターフェイスまたは抽象クラスと対話します。 これにより、デザインがより柔軟で変更が容易になります。 -**再利用可能なオブジェクト指向ソフトウェア:**ファクトリ パターンは、オブジェクト作成ロジックをシステムから分離するためコードの再利用が促進され、システムの保守と拡張が容易になります。 -**オブジェクト作成の柔軟性:**ファクトリーメソッドでは、オブジェクト作成のための複数の実装が可能で、実行時に選択できます。これは、必要なオブジェクトのタイプが外部要因によって変化するシナリオで特に役立ちます。

IronPDF: .NET PDFソリューション

ファクトリーパターン C# (開発者向けの仕組み): 図2 - IronPDF

IronPDFは、.NETプラットフォーム用に設計されたライブラリで、開発者が複雑なPDF生成APIに深く入り込むことなく、HTML、CSS、画像、およびJavaScriptから直接PDFファイルを簡単に作成、編集、操作できるようにします。主な魅力は、Chromeベースのレンダリングエンジンを使用して、ウェブコンテンツを迅速かつ高精度でPDF文書に変換できることです。

主な機能には、HTML文字列またはURLからのPDFの生成、ウェブページの動的なPDFへのレンダリング、フォームアプリケーション、サーバーアプリケーション、そして安全なイントラネットなどとの連携があります。 そのパフォーマンスは効率のために最適化されており、非同期操作、カスタムロギング、および迅速に開始するための豊富なドキュメンテーションを提供しています。

IronPDF は HTML から PDF への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから PDF を作成するのに最適です。 HTML ファイル、URL、または生の HTML 文字列のサポートにより、IronPDF は高品質な PDF ドキュメントを簡単に生成します。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Initialize a Pdf Renderer with a Chrome Rendering Engine
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

コード例

IronPDFをファクトリパターンと統合する方法を示すために、簡単な例を作成してみましょう。 ファクトリパターンは、スーパークラス内で具体的なプロダクトやオブジェクトを作成する方法を提供するタイプの生成的デザインパターンであり、サブクラスが生産される特定のオブジェクトを修正することを許可します。 これは、特定のニーズに基づいてHTML文字列、URL、ファイルから異なるタイプのPDFドキュメントを作成することに適しています。

IPdfCreatorというインターフェースを作成し、PDFを作成するためのメソッドを定義し、その後IronPDFを使用してさまざまな方法でPDFを作成する異なるファクトリークラスを実装します。

ステップ 1: IPdfCreator インターフェースの定義

このインターフェースは、全ての具体的なファクトリーが実装する必要のあるCreatePdfメソッドを宣言します。

public interface IPdfCreator
{
    // Method responsible for creating a PDF
    void CreatePdf(string source);
}

ステップ 2: 具体的なファクトリーの実装

ここでは**、IPdfCreator の具体的な実装を 2 つ定義します。1**つは HTML 文字列から PDF を作成するためのもので、もう 1 つは URL から PDF を作成するためのものです。

public class HtmlStringPdfCreator : IPdfCreator
{
    // Creates a PDF from an HTML string
    public void CreatePdf(string htmlString)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        pdf.SaveAs("HtmlStringPdf.pdf");
    }
}

// Create PDF from a given URL
public class UrlPdfCreator : IPdfCreator
{
    public void CreatePdf(string url)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("UrlPdf.pdf");
    }
}

ステップ 3: ファクトリーの使用

アプリケーションでは、これらのファクトリーを使用して異なるソースからPDFドキュメントを作成し、PDF作成プロセスの詳細を気にせずに済みます。

class Program
{
    static void Main(string[] args)
    {
        // Add your IronPDF license key
        License.LicenseKey = "License-Key";

        // Create PDF from HTML string
        IPdfCreator htmlPdfCreator = new HtmlStringPdfCreator();
        htmlPdfCreator.CreatePdf("<h1>Hello, World!</h1>");

        // Create PDF from URL
        IPdfCreator urlPdfCreator = new UrlPdfCreator();
        urlPdfCreator.CreatePdf("http://example.com");
    }
}

このセットアップでは、HtmlStringPdfCreatorとUrlPdfCreatorはPDFを作成する具体的なファクトリーです。 Programクラスはクライアントとして機能し、HTML文字列やURLからPDFを生成する詳細を知る必要なく、これらのファクトリーを使用します。 このアプローチは要有性を提供し、ファイルやストリームなどからの新しいPDF作成方法を導入することが可能で、IPdfCreatorインターフェースを実装するファクトリーを追加することで、オープン/クローズドの原則を守ります。

出力

以下のスクリーンショットはコードの出力です:

ファクトリーパターン C# (開発者向けの仕組み): 図3 - ファクトリーデザインパターンPDF出力

ファクトリーパターン C# (開発者向けの仕組み): 図4 - 基本ファクトリーメソッド出力

結論

C#のファクトリパターンは、オブジェクト作成を管理し、ソフトウェアデザインをよりメンテナンス可能で拡張可能にするためのフレームワークを提供します。 具体クラスを使用して抽象ファクトリを実装し、作成ロジックを委任することで、開発者は変更しやすく拡張しやすいシステムを作成することができます。 少数のクラスを扱う場合でも、複雑な依存関係のあるシステムの場合でも、ファクトリパターンは具体的なクラスオブジェクトの作成に対する構造化アプローチを提供します。 特に、ユーザー入力、構成、またはアプリケーションの状態に基づいて作成されるオブジェクトのタイプが異なる場合に便利です。

IronPDFは、IronPDFの無料トライアルを提供しており、ライセンスオプションはliteLicenseから始まり、PDF機能を.NETアプリケーションに統合しようとしている開発者向けに用意されています。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から