2009-02-20 18 views
7

Czy jestem jedynym, który czasami przyjmuje pozornie łatwe, ale błędne, wyjście z pewnych sytuacji projektowych? Przyznaję, że zrobiłem moją część wątpliwych obiektów Singleton. Poza tym byłem znany z tego, że uczyniłem obiekt Boży lub dwa, aby wszystko wydawało się łatwiejsze.Jakie anty wzorce używasz, mimo że wiesz, że nie powinieneś?

Czy używasz anty-wzór, mimo że wiesz, że nie powinieneś?

+0

Jestem ciekawy singleton. Leniwe wyjście polega na użyciu zwykłych starych globałów, więc dlaczego masz dodatkowe kłopoty z użyciem * bardziej * złożonego antypodstawy? Globały mogą być złe, ale generalnie są mniej szkodliwe niż single. Łatwiej też kodować. – jalf

+1

Uważam, że Singletony są z natury złym wzorcem projektowym, moim zdaniem są one użyteczne tylko w rzadkich przypadkach sterowników sprzętowych. W większości innych przypadków po prostu wprowadzają stan globalny w moim środowisku OOP, który niszczy cele jakości projektu, takie jak przenośność. –

+0

Ciąg dalszy od ostatniej uwagi - Często jednak uzasadniam singletony następującą logiką: "Potrzebuję tylko jednego z nich, więc zrobię z tego singleton", mimo że to, czego naprawdę głęboko pragnę, jest zmienną globalną. –

Odpowiedz

2

Nieprawidłowy wzór jest łatwym błędem do wykonania. Czasami może wydawać się, że zbyt dużo pracy może przerwać zajęcia. Potem w pewnym momencie zapłacisz za to. Zauważyłem, że ten anty-wzór idzie w parze z mocnym sprzężeniem.

Nieprawidłowy wzór blokady dostawcy może być również trudny do uniknięcia w przypadku używania języków określonych przez sprzedawcę.

+0

Możesz edytować to, by powiedzieć "Bóg". – CTT

+0

Podoba mi się pomysł obiektu gob - wszystkie usta i spodnie nie są skomplikowane, ale tak naprawdę nie robią zbyt wiele. – Tom

+0

Właściwie myślałem, że używasz slangu. Wstyd, że to zmieniłeś, mógłbyś zacząć nową falę, heh. –

6

Jest bardzo łatwy próbuje zrobić coś elastycznego, a kończąc na Inner Platform Effect . Jestem winny wewnętrznych baz danych, na przykład.

Czasami zbyt kuszące jest kodowanie rzeczy, a nie używanie wcześniejszej wersji podobnej - Not Invented Here. Staram się go unikać, ale ...

0

Vendor Lock In

Zawsze jest to coś specyficzny jeden sprzedawca, który zostanie dodany do konkretnego kawałka funkcjonalności, ponieważ ma większy sens niż pisanie go samodzielnie. Spędziłem dużo czasu, kopiąc siebie na tę decyzję później.

1

W komentarzach i myślę, że to uzasadnia bycie odpowiedzią - wzorzec Singleton.

Jest to sposób na osiągnięcie zmiennych globalnych, gdy język (np. Java) nie obsługuje tego. Jest to jeden z tych wzorców, w których nigdy nie powinieneś używać - z wyjątkiem sytuacji, gdy jest to potrzebne. Ważną kwestią jest możliwość rozróżnienia, kiedy potrzebna jest zmienna globalna (istnieją instancje) i kiedy tylko się ją chce.

Są problemy z singletonami poza poważnymi problemami z wprowadzaniem stanu globalnego, w Javie, na przykład są one pojedyncze w programie ładującym klasy z wieloma ładowarkami klasy, które można skończyć w wielu kopiach.

Powiązane problemy