2010-10-18 7 views

Odpowiedz

8

Jest to doskonały przykład przypadku użycia, w którym wydajność aplikacji nie ma większego znaczenia, a pytanie faktycznie wchodzi w przedwczesną klasę optymalizacji rozwiązywania problemów. Czemu? Używanie FileDialog oznacza interakcję z użytkownikiem, który, nawet jeśli posiada umiejętności nieobeznane z klawiszem skrótu Kung Fu, będzie o wiele rzędów wielkości wolniejszy niż aplikacja. Ile FileDialogs może szybko otworzyć, używać i zamknąć w ciągu jednej minuty? Powiedz kilkanaście. Nie powinieneś przejmować się kilkoma przedmiotami przychodzącymi i odchodzącymi w ciągu jednej minuty. Nie powinien nawet pojawić się na twoim radaru. Użyj swojej energii gdzie indziej. W rzeczywistości za każdym razem powinieneś stworzyć nowy obiekt i unikać bolesnych zapisów w pamięci podręcznej.

+0

+1 bardzo ładnie powiedział i mocny punkt z przedwczesnej optymalizacji. – chiccodoro

3

chciałbym zrobić statyczną klasę FileDialog który generuje nową instancję FileDialog każdym razem, gdy nowy potrzebuje otwarty zamiast dzielenia instancji Singleton całej aplikacji.

Zaoszczędzi ci to bólu głowy, próbując dowiedzieć się, czy czytasz poprawną ścieżkę z okna dialogowego, czy ktoś otworzył okno i wybrał nową ścieżkę, a teraz odwołujesz się do tej nowej ścieżki. niż pierwotnie wybrana ścieżka, itd ...

1

Dlaczego wdrożenie jest jak Singleton? Czy rzeczywiście możesz zweryfikować, że wyświetlanie dwóch okien dialogowych plików nigdy nie nastąpi?

Lepiej mieć go jako zwykłą klasę; nie chcesz tworzyć ograniczeń, które później mogą stać się przyczyną bólu.

To nie jest tak, że twoja aplikacja będzie krytycznie przeładowana przez miliony wywołań do okna dialogowego pliku, a kto wie, może kiedyś to będzie właściwe rozwiązanie, aby mieć dwa okna dialogowe plików. Nawet jeśli nie wyświetlasz ich jednocześnie, być może przechowywanie historii w oknie dialogowym "źródłowym" i posiadanie oddzielnej historii w oknie "miejsca docelowego" byłoby błogosławieństwem w programie do przesyłania plików.

0

Zapomnij o wydajności/szybkości. To nie ma znaczenia tutaj. Semantyka ma znaczenie. Ponowne użycie tego samego okna dialogowego pliku może dać ci wszystko za darmo. Czy dialog rozpocznie się za każdym razem w tym samym katalogu? Będzie, jeśli będzie to ta sama instancja. Jeśli tworzysz nowe okna dialogowe, będziesz musiał ustawić katalog początkowy.

Dlaczego więc niemożliwe jest utworzenie więcej niż jednej instancji? Po prostu dodaj członka instancji do swojej klatki i skończ z nim.