Zajmuję się tworzeniem prostej symulacji z OpenGL i ta symulacja ma pewne globalne stałe, które są zmieniane przez użytkownika podczas wykonywania symulacji. Chciałbym wiedzieć, czy wzorzec projektowania Singleton jest najlepszym sposobem pracy jako tymczasowy, czas wykonania, "repozytorium konfiguracji"Używanie singletonu do przechowywania globalnych parametrów aplikacji
Odpowiedz
Singleton jest prawdopodobnie najlepszą opcją, jeśli chcesz zachować te ustawienia naprawdę "globalnie".
Jednak dla celów symulacji rozważałbym, czy zamiast tego można zaprojektować algorytmy, aby przekazać odwołanie do instancji konfiguracji. Ułatwiłoby to znacznie przechowywanie konfiguracji na symulację i ostatecznie umożliwiłoby jednoczesne przetwarzanie wielu symulacji w oddzielnych konfiguracjach, jeśli zmienią się wymagania.
Często próbowanie uniknięcia globalnego stanu jest lepszym, długoterminowym podejściem.
Myślę, że w przeszłości używałem przestrzeni nazw w tym celu, a nie w klasach singleton, ale to też powinno działać (prawdopodobnie jeszcze lepiej).
Oczywiście, jeśli chcesz mieć możliwość zmiany konfiguracji bez ponownej kompilacji, możesz przenieść wszystko do osobnego pliku właściwości (lub XML lub YAML lub CSV lub cokolwiek wolisz), a następnie wczytać go przy uruchomieniu aplikacji w górę. Wtedy będziesz potrzebował klasy "config" do przechowywania wszystkich wartości w hashmap (lub coś podobnego).
- 1. Użyj pojedynczej kolekcji do przechowywania wszystkich parametrów
- 2. Używanie zmiennych globalnych między plikami?
- 3. Jaki jest najlepszy sposób przechowywania globalnych ustawień aplikacji w aplikacji Rails?
- 4. Używanie Reszta do przechowywania danych w Sqlite
- 5. Używanie tablic VS obiektów do przechowywania danych
- 6. Używanie CDN do przechowywania/przesyłania zdjęć użytkownika?
- 7. Używanie SSkeychain do przechowywania tokenów dostępu
- 8. Używanie HashTable do przechowywania tylko kluczy?
- 9. Używanie jQuery do przechowywania stanu skomplikowanej formy
- 10. Używanie NSKeyedArchiver do przechowywania własnego modelu danych
- 11. Deklarowanie i używanie globalnych tablic C#
- 12. Lokalna pamięć do przechowywania aplikacji iPhone'a
- 13. używanie osgi do rozwijania aplikacji
- 14. Używanie plików cookie do przechowywania sesji w ASP MVC
- 15. C# Arrays - Używanie ich do przechowywania poziomu gry
- 16. Używanie klasy do przechowywania statycznych danych w Javie?
- 17. Metoda zniszczenia fasoli sprężynowej, singletonu i prototypów
- 18. deklarowanie zmiennych globalnych w yii i używanie ich w kontrolerze
- 19. Używanie par klucz-wartość jako parametrów
- 20. Używanie narzędzia dapper do dołączania parametrów za pomocą MySql
- 21. Używanie literałów łańcuchowych jako parametrów do szablonów w szablonach Django
- 22. Dodawanie przechowywania sesji plików cookie do aplikacji Rails API
- 23. Najlepsza praktyka do przechowywania wystąpienia singleton w aplikacji ASP.NET
- 24. BigQuery vs Elasticsearch do analizy i przechowywania logów aplikacji
- 25. . Konfiguracja aplikacji .NET do przechowywania informacji kontaktowych e-mail.
- 26. PHP: Używanie zmiennej do przechowywania nazwy tabeli i używanie tej zmiennej w zapytaniach
- 27. Wiele parametrów w aplikacji kolby
- 28. Używanie klasy aplikacji Android do utrwalania danych
- 29. Używanie errno do zgłaszania błędów aplikacji/biblioteki
- 30. Używanie itertools do aplikacji funkcji rekursywnej