Jestem całkiem nowy w Design Patterns.I po prostu natknąłem się na Factory Design Pattern. Zrozumiałem, że deleguje instancję do podklas. Ale nie dostałem faktycznego zastosowania wzoru. W których scenariuszach można zastosować ten wzór, aby uzyskać dobry efekt. Słyszałem o nadużyciu wzorca i nie chciałem sobie z tym poradzić. Czy ktokolwiek może wymienić przykład z prawdziwego świata, w którym jest powszechnie stosowany.Jakie są praktyczne zastosowania wzoru metody Factory?
Odpowiedz
Używałem go do wtyczek do aplikacji ... w ten sposób można wywołać główną aplikację w fabryce klas, aby utworzyć konkretną wtyczkę implementującą interfejs opracowany w głównej aplikacji. W ten sposób możesz zakodować główną część aplikacji, nie musisz nawet wiedzieć, co zostanie podłączone.
Po prostu użyłem go w aplikacji planowania, w której zadania do zaplanowania znajdują się w osobnych złożeniach, a program planujący nie wie nic o zadaniach ... Otrzymuje nazwę zestawu, z którym definiowane jest zadanie od źródło zewnętrzne, a następnie dynamicznie ładuje złożenie, tworzy instancję klasy w tym złożeniu, używając dobrze zdefiniowanego interfejsu. Metoda fabryczna w programie planującym, która pobiera nazwę zespołu jako parametr wejściowy, zwraca wystąpienie klasy w załadowanym zespole ...
.. ale jest tak wiele zastosowań i sposobów użycia .. wzór.
Wzorzec fabryczny jest bardzo przydatny do odwzorowania pojemności w odpowiednim programie obsługi.
Załóżmy, że masz kolejkę zawierającą obiekty typu task
. Teraz można podklasę task
z różnych powodów. Jeśli ładujesz zadania z jakiegoś źródła, takiego jak baza danych, możesz użyć fabryki, aby określić typ zadania do załadowania.
Na przykład:
private IEnumerable<Task> GetTasks(DataTable Table){
Task NewTask;
foreach(DataRow Row in Table){
switch(tasktype){
case tasktypes.TaskTypeA:
NewTask = NewTaskA(...);
break;
case TaskTypes.TaskTypeB:
NewTask = NewTaskB(...);
break;
...
}
yield return NewTask;
}
}
Później można następnie wywołać wirtualnych metod dotyczące zadań w kolejce, jak „konsumować” lub „proces”, na przykład.
Zaletą podejścia fabrycznego (w tym przypadku) jest to, że wystarczy tylko raz włączyć typ zadania (podczas tworzenia zadania) i pozwolić, aby polimorfizm zajmował się wszystkim innym.
Co prawda potrzeba faktycznego wykorzystania bardziej bolesnych szczegółów implementacji opisanych przez wzorzec została usunięta dzięki sposobowi działania C#, ale moja funkcjonalność SQL DAL przechodzi przez fabryki obiektów (i polecenia SQL) do funkcji użyteczności, które używają fabryk w celu generowania obiektów. Gdybym nie używał C#, przypuszczam, że mógłbym zamiast tego użyć jawnej klasy fabrycznej, która generuje obiekty.
mianowicie w jednym z 2 przypadkach:
- klasa nie zna typu obiektu to chce stworzyć, ale po prostu chce się obiekt, który będzie „wykonać zadanie”. EMF wskakuje do umysłu, ponieważ silnie wykorzystuje ten wzorzec.
- chcesz, aby podklasy twojej klasy określały typ obiektu, który ma być użyty. np. piszesz swoją klasę rodziców, nie wiedząc, jaki konkretny produkt zostanie stworzony, będzie to odpowiedzialność konkretnego twórcy.
- 1. Jakie są praktyczne zastosowania XOR w algorytmach
- 2. jQuery .each() - Zastosowania praktyczne?
- 3. Jakie są praktyczne zastosowania algorytmów najniższego wspólnego przodka?
- 4. Praktyczne zastosowania typu dynamiczny Scala
- 5. Jakie są typowe zastosowania UDP?
- 6. Praktyczne zastosowania poziomu izolacji Seralization?
- 7. Jakie są rzeczywiste zalety wzoru gościa? Jakie są alternatywy?
- 8. Jakie są praktyczne ograniczenia wątków na procesor?
- 9. Który wzór jest przeciwieństwem wzoru Factory?
- 10. Jakie są zastosowania podprogramów lwartości w Perlu?
- 11. Jakie są niektóre zastosowania metadanych Clojure?
- 12. Jakie są dozwolone zastosowania globalnych haków klawiatury?
- 13. Jakie są dobre zastosowania modułów pakowanych OCaml?
- 14. Jawne zachowanie konstruktora kopiowania i praktyczne zastosowania
- 15. jakie jest praktyczne zastosowanie System.Transactions?
- 16. Jakie są zastosowania właściwości Wyrównaj i Zakotwiczenia w TForm?
- 17. Jakie są zastosowania programów Mcrt1.o i Scrt1.o?
- 18. Jakie są zastosowania If-None-Match z wieloma podmiotami?
- 19. Jakie są odpowiednie i nieodpowiednie zastosowania refleksji w Javie?
- 20. Praktyczne przykłady zastosowania dla nowego some- Clojure za> makro
- 21. Jakie są praktyczne różnice między formularzami opartymi na szablonach i formami reaktywnymi?
- 22. Jakie zastosowania mają atrybuty parametrów ogólnych?
- 23. Jakie są najnowocześniejsze metody rozwiązywania równań funkcjonalnych?
- 24. Jakie są dobre metody debugowania Perla?
- 25. Jakie są sprawdzone metody nazywania modułów Maven?
- 26. Jakie są sprawdzone metody zarządzania identyfikatorami zdarzeń?
- 27. Jakie metody są blokowane w JavaScript?
- 28. Niefinansowe zastosowania blockchain
- 29. Co to są próbki cieni w OpenGL i jakie są możliwe zastosowania dla nich?
- 30. Składnia dla zastosowania atrybutu do anonimowej metody?
nadal możesz zrobić to samo, nie poświęcając klasy do wystąpienia? – BKSpurgeon