IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

Wzorzec fabryczny w języku C# (jak działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 23 kwietnia 2026

Wzorzec fabryczny w języku C# to podejście strukturalne należące do kategorii wzorców projektowych. Wzorzec projektowy Factory Method w języku C# ma na celu rozwiązywanie problemów związanych z tworzeniem obiektów bez określania dokładnej klasy tworzącej obiekt, który zostanie utworzony.

Zasadniczo wzorzec fabryczny zajmuje się tworzeniem obiektów poprzez delegowanie tego zadania do konkretnej klasy, znanej jako klasa fabryczna. Dzięki temu system jest bardziej elastyczny i łatwiejszy w zarządzaniu, zwłaszcza przy wprowadzaniu nowych typów obiektów, ponieważ klasa fabryczna obsługuje proces tworzenia obiektów, zmniejszając zależność od klas konkretnych. Przyjrzyjmy się, jak można zaimplementować i wykorzystać wzorzec Factory Method, czyli wzorzec projektowy typu kreacyjnego w języku C#. Bibliotekę IronPDF PDF Generation Library omówimy później.

Podstawowa struktura wzorca metody fabrycznej

Główną ideą wzorca metody fabrycznej jest zdefiniowanie wspólnego interfejsu do tworzenia obiektów, przy jednoczesnym umożliwieniu podklasom zmiany typu tworzonych obiektów. Ten wzorzec obejmuje kilka kluczowych elementów:

  • Interfejs produktu: Określa strukturę obiektów tworzonych przez metodę fabryczną.
  • Konkretne klasy produktów: Implementują interfejs produktu.
  • Klasa Creator (klasa abstrakcyjna Creator): Deklaruje metodę fabryczną, która zwraca obiekt interfejsu produktu.
  • Concrete Creator: Modyfikuje metodę fabryczną w celu dostarczenia instancji konkretnego produktu.

Przykład: Fabryka pojazdów

Rozważmy scenariusz, w którym mamy różne rodzaje pojazdów, takie jak samochody osobowe i ciężarówki. Wykorzystamy wzorzec fabryczny do stworzenia fabryki pojazdów, która może tworzyć różne typy pojazdów na podstawie danych wprowadzonych przez użytkownika lub pliku konfiguracyjnego.

Krok 1: Zdefiniuj interfejs produktu

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

Krok 2: Wdrożenie konkretnych produktów

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.");
    }
}

Krok 3: Utwórz klasę tworzącą abstrakcję

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

Krok 4: Wdrożenie Concrete Creator

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");
        }
    }
}

Krok 5: Wykorzystanie kodu klienta

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();
    }
}

W powyższym przykładzie klasa VehicleFactory pełni rolę abstrakcyjnego kreatora, a klasa ConcreteVehicleFactory jest konkretnym kreatorem, który implementuje metodę fabryczną CreateVehicle. Ta metoda decyduje, jaki typ pojazdu utworzyć na podstawie otrzymanych danych wejściowych. Kod klienta wykorzystuje następnie fabrykę do tworzenia instancji różnych pojazdów, co sprzyja luźnemu powiązaniu między logiką tworzenia obiektów a kodem klienta.

Factory Pattern C# (Jak to działa dla deweloperów): Rysunek 1 - Wynik wzorca projektowego Factory

Zalety stosowania wzorca fabrycznego

Wzorzec fabryczny oferuje kilka zalet, zwłaszcza w złożonych systemach:

  • Luźne sprzężenie: Kod klienta współdziała z interfejsami lub klasami abstrakcyjnymi zamiast z konkretnymi klasami produktów. Wynikiem tego jest projekt, który jest bardziej elastyczny i łatwiejszy do modyfikacji.
  • Oprogramowanie obiektowe wielokrotnego użytku: Wzorzec fabryczny sprzyja ponownemu wykorzystaniu kodu, ponieważ oddziela logikę tworzenia obiektów od systemu, ułatwiając jego utrzymanie i rozbudowę.
  • Elastyczność w tworzeniu obiektów: Metoda fabryczna pozwala na różne implementacje tworzenia obiektów, które można wybierać w czasie wykonywania. Jest to szczególnie przydatne w sytuacjach, w których typ wymaganych obiektów może się różnić w zależności od czynników zewnętrznych.

IronPDF: Rozwiązanie PDF dla platformy .NET

Factory Pattern C# (Jak to działa dla deweloperów): Rysunek 2 - IronPDF

IronPDF to biblioteka zaprojektowana dla platformy .NET, pomagająca programistom w łatwym tworzeniu, edytowaniu i manipulowaniu plikami PDF bezpośrednio z HTML, CSS, obrazów i JavaScript, bez konieczności zagłębiania się w skomplikowane API do generowania plików PDF. Jej główną zaletą jest możliwość szybkiego i bardzo dokładnego przekształcania treści internetowych w dokumenty PDF dzięki wykorzystaniu silnika renderującego opartego na przeglądarce Chrome.

Kluczowe funkcje obejmują generowanie plików PDF z ciągów znaków HTML lub adresów URL, renderowanie stron internetowych jako plików PDF w locie oraz możliwość pracy między innymi z aplikacjami formularzowymi, aplikacjami serwerowymi i bezpiecznymi intranetami. Jego wydajność jest zoptymalizowana pod kątem efektywności, z możliwością operacji asynchronicznych, niestandardowego logowania oraz obszernej dokumentacji, która pomoże Ci szybko rozpocząć pracę.

IronPDF wyróżnia się w konwersji HTML do PDF, zapewniając precyzyjne zachowanie oryginalnych układów i stylów. Idealnie nadaje się do tworzenia plików PDF z treści internetowych, takich jak raporty, faktury i dokumentacja. Dzięki obsłudze plików HTML, adresów URL i surowych ciągów znaków HTML, IronPDF z łatwością tworzy wysokiej jakości dokumenty 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");
    }
}

Przykład kodu

Aby zilustrować, w jaki sposób IronPDF można zintegrować z wzorcem fabrycznym, stwórzmy uproszczony przykład. Wzorzec fabryczny to rodzaj wzorca projektowego tworzenia, który oferuje sposób na tworzenie konkretnych produktów lub obiektów w ramach klasy nadrzędnej, pozwalając podklasom na modyfikowanie konkretnych obiektów, które są wytwarzane. Doskonale wpisuje się to w tworzenie różnych typów dokumentów PDF w oparciu o konkretne potrzeby, np. na podstawie ciągów HTML, adresów URL lub plików.

Stworzymy interfejs o nazwie IPdfCreator, który definiuje metodę tworzenia plików PDF, a następnie zaimplementujemy różne klasy fabryczne, które tworzą pliki PDF na różne sposoby przy użyciu IronPDF.

Krok 1: Zdefiniuj interfejs IPdfCreator

Ten interfejs deklaruje metodę CreatePdf, którą zaimplementują wszystkie konkretne fabryki.

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

Krok 2: Wdrożenie fabryk konkretów

W tym miejscu definiujemy dwa konkretne wdrożenia IPdfCreator: jedno do tworzenia plików PDF z ciągów znaków HTML, a drugie z adresów URL.

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");
    }
}

Krok 3: Korzystanie z Factory

W swojej aplikacji możesz teraz używać tych fabryk do tworzenia dokumentów PDF z różnych źródeł, nie martwiąc się o szczegóły procesu tworzenia plików 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");
    }
}

W tym kontekście HtmlStringPdfCreator i UrlPdfCreator to konkretne fabryki, które generują pliki PDF. Klasa Program, pełniąca rolę klienta, korzysta z tych fabryk bez konieczności znajomości skomplikowanych szczegółów dotyczących generowania plików PDF na podstawie ciągów znaków HTML lub adresów URL. Takie podejście zapewnia elastyczność, ponieważ można wprowadzać nowe sposoby tworzenia plików PDF (np. z plików lub strumieni) po prostu poprzez dodanie kolejnych fabryk implementujących interfejs IPdfCreator, zgodnie z zasadą otwartości i zamkniętości w projektowaniu obiektowym.

Wynik

Poniższe zrzuty ekranu przedstawiają wynik działania kodu:

Factory Pattern C# (Jak to działa dla deweloperów): Rysunek 3 - Wynik PDF wzorca projektowego Factory

Factory Pattern C# (Jak to działa dla deweloperów): Rysunek 4 - Wynik podstawowej metody Factory

Wnioski

Factory Pattern C# (Jak to działa dla deweloperów): Rysunek 5 - Licencjonowanie

Wzorzec fabryczny w języku C# zapewnia strukturę do zarządzania tworzeniem obiektów, dzięki czemu projekt oprogramowania jest łatwiejszy w utrzymaniu i rozbudowie. Wykorzystując konkretne klasy do implementacji abstrakcyjnej fabryki i delegowania logiki tworzenia, programiści mogą tworzyć systemy, które łatwiej dostosować i rozbudować. Niezależnie od tego, czy mamy do czynienia z kilkoma klasami, czy z systemem o złożonych zależnościach, wzorzec fabryczny oferuje ustrukturyzowane podejście do precyzyjnego tworzenia obiektów klas. Jest to szczególnie przydatne w sytuacjach, w których typ tworzonych obiektów może się różnić w zależności od danych wprowadzonych przez użytkownika, konfiguracji lub stanu aplikacji.

IronPDF oferuje bezpłatną wersję próbną IronPDF na start, a opcje licencji zaczynają się od liteLicense, dzięki czemu zaspokajają potrzeby deweloperów, którzy chcą zintegrować funkcje PDF w swoich aplikacjach .NET.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta