Wzorzec fabryczny w C++

Wzorzec Fabryczny W C



Wzorzec fabryczny to sposób tworzenia obiektów w programowaniu bez konieczności znajomości szczegółowych szczegółów ich tworzenia. Zapewnia uproszczony interfejs do tworzenia obiektów, ukrywając złożoną logikę tworzenia za klasą fabryczną. Należy do kategorii wzorców projektowych, które odnoszą się do mechanizmów tworzenia obiektów. W tym artykule omówiono wzorce fabryczne w języku C++.

Wprowadzenie do wzorca fabrycznego

Wzorzec projektowy to metoda rozwiązywania powtarzających się problemów w projektowaniu oprogramowania. Wzorzec fabryczny to jeden z wzorców projektowych, który pomaga tworzyć obiekty w elastyczny i niezależny sposób.

Wzorzec fabryczny to kreacyjny wzorzec projektowy w C++, który umożliwia tworzenie obiektów bez jawnej znajomości klasy obiektu. Zapewnia sposób hermetyzacji złożonej logiki tworzenia obiektów w oddzielnej klasie fabrycznej. Odbywa się to poprzez zdefiniowanie wspólnego interfejsu do tworzenia obiektów, w którym konkretna klasa obiektu jest określana w czasie wykonywania.







Zamiast bezpośrednio tworzyć obiekt, używamy metody fabrycznej, aby dać nam instancję żądanego obiektu. W ten sposób możemy ukryć skomplikowane kroki związane z tworzeniem obiektu i ułatwić zmianę lub modyfikację obiektu w przyszłości.



Dlaczego warto używać wzorca fabrycznego?

Istnieje kilka powodów, dla których możemy chcieć użyć wzorca fabrycznego. Jednym z powodów jest to, że umożliwia oddzielenie kodu od określonych klas. Korzystając z metody fabrycznej, możemy łatwo zamienić jedną klasę na inną bez konieczności zmiany jakiegokolwiek innego kodu i zwiększyć jego wydajność.



Innym powodem używania wzorca fabrycznego jest to, że może on uczynić kod bardziej testowalnym. Wzorce fabryczne pozwalają nam testować kod poprzez tworzenie symulowanych obiektów.





Oto kilka innych powodów, dla których wzorzec fabryczny jest używany w C++:

  • Wzorzec metody fabrycznej jest używany, gdy klasa nie wie z góry, jakie obiekty ma stworzyć.
  • Wzorzec jest używany, gdy klasa opiera się na swoich podklasach w celu określenia tworzonych obiektów.
  • Jest to przydatne, gdy chcesz zamknąć logikę tworzenia złożonego obiektu w jednym miejscu.

Przykład wzorca fabrycznego w C++

W C++ możemy zaimplementować wzorzec fabryki poprzez zdefiniowanie abstrakcyjnej klasy bazowej za pomocą metody wirtualnej fabryki. Ta metoda powinna zwrócić wskaźnik do żądanej instancji klasy. Następnie możemy wyprowadzić konkretne klasy z tej klasy bazowej i zastąpić metodę fabryczną, aby zwrócić instancję odpowiedniej klasy.



Oto przykład, jak możemy wykorzystać tę implementację wzorca fabrycznego:

#include

przy użyciu przestrzeni nazw std ;

kształt klasy {

publiczny :

wirtualny próżnia rysować ( ) = 0 ;

statyczny Kształt * utwórzKształt ( int typ ) ;

} ;

kółko klasowe : kształt publiczny {

publiczny :

próżnia rysować ( ) {

cout << „Rysowanie koła”. << koniec ;

}

} ;

klasa Prostokąt : kształt publiczny {

publiczny :

próżnia rysować ( ) {

cout << „Rysowanie prostokąta”. << koniec ;

}

} ;

Kształt * Kształt :: utwórzKształt ( int typ ) {

Jeśli ( typ == 1 ) {
powrót nowy krąg ( ) ;
} w przeciwnym razie Jeśli ( typ == 2 ) {
powrót nowy prostokąt ( ) ;
} w przeciwnym razie {
powrót nullptr ;
}
}


int główny ( ) {

Kształt * koło = Kształt :: utwórzKształt ( 1 ) ;

koło -> rysować ( ) ;

Kształt * prostokąt = Kształt :: utwórzKształt ( 2 ) ;

prostokąt -> rysować ( ) ;

powrót 0 ;

}

W tym przykładzie mamy klasę Shape z dwiema klasami pochodnymi: Circle i Rectangle. Klasa Shape ma czysto wirtualną funkcję draw(), która jest implementowana przez klasy pochodne. Klasa Shape ma również funkcję statyczną createShape(int type), która działa jako metoda fabryczna do tworzenia instancji klas pochodnych na podstawie określonego typu. Funkcja draw() jest wywoływana na tworzonych obiektach w celu zademonstrowania ich specyficznego zachowania.

  Obraz zawierający tekst, czcionkę, zrzut ekranu Opis generowany automatycznie

Wniosek

Wzorzec fabryczny to kreacyjny wzorzec projektowy w C++, który umożliwia tworzenie obiektów bez jawnej znajomości klasy obiektu. Zapewnia uproszczony interfejs do tworzenia obiektów, ukrywając złożoną logikę tworzenia za klasą fabryczną. Odbywa się to poprzez zdefiniowanie wspólnego interfejsu do tworzenia obiektów, w którym konkretna klasa obiektu jest określana w czasie wykonywania. Przeczytaj więcej o wzorcach fabrycznych w tym artykule.