Ruby/Metody singletonowe: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje) Nie podano opisu zmian |
Szymon wro (dyskusja | edycje) Nie podano opisu zmian |
||
Linia 3:
Zachowanie instancji zdeterminowane jest przez jej klasę, ale mogą być sytuacje, w których wiemy, że konkretna instancja powinna mieć specjalne zachowanie. W większości języków musimy niestety definiować nową klasę, która byłaby wtedy instancjonowana tylko raz. W Rubim możemy dać każdemu obiektowi jego własne metody.
<source lang="ruby">
ruby> test1 = SingletonTest.new▼
#<SingletonTest:0xbc468>▼
ruby> def test2.rozmiar▼
ruby> test1.rozmiar▼
ruby> test2.rozmiar▼
10▼
W tym przykładzie <tt>test1</tt> i <tt>test2</tt> należą do tej samej klasy, ale <tt>test2</tt> otrzymał przedefiniowaną metodę <tt>rozmiar</tt>, więc obiekty zachowują się odmiennie. Metoda dana pojedynczemu obiektowi nazywana jest ''metodą singletonową''<ref>Nazwa może kojarzyć się z wzorcem projektowym [[w:Wzorzec singletonu|singletonu]], jednak wymaga nieco więcej wyjaśnienia. Każdy obiekt w Rubim posiada swoją klasę prototypową, która też jest obiektem i którą można modyfikować (indywidualnie dla każdego obiektu). W tym sensie każda para obiekt-klasa prototypowa jest singletonem, czyli każdy obiekt jest tylko jedną jedyną instancją swojej klasy prototypowej.</ref>.▼
Metody singletonowe są często używane w elementach graficznego interfejsu użytkownika (ang. GUI), gdzie, w zależności od naciśniętych przycisków muszą być podejmowane odpowiednie akcje.▼
end
</source>
▲W tym przykładzie obiekty <tt>test1</tt> i <tt>test2</tt> należą do tej samej klasy, ale <tt>test2</tt> otrzymał przedefiniowaną metodę <tt>rozmiar</tt>, więc obiekty zachowują się odmiennie. Metoda dana pojedynczemu obiektowi nazywana jest ''metodą singletonową''<ref>Nazwa może kojarzyć się z wzorcem projektowym [[w:Wzorzec singletonu|singletonu]], jednak wymaga nieco więcej wyjaśnienia. Każdy obiekt w Rubim posiada swoją klasę prototypową, która
▲Metody singletonowe są często używane w elementach graficznego interfejsu użytkownika (ang. ''GUI''), gdzie, w zależności od naciśniętych przycisków muszą być podejmowane odpowiednie akcje.
Metody singletonowe nie występują jedynie w Rubim. Pojawiają się również w CLOS, Dylanie, itd. Ponadto, niektóre języki, dla przykładu Self i NewtonScript, posiadają tylko metody singletonowe. Są one czasem nazywane ''językami prototypowymi''.
|