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)
Linia 5:
<pre>
ruby> class SingletonTest
| def sizerozmiar
| 25
| end
Linia 13:
#<SingletonTest:0xbc468>
ruby> test2 = SingletonTest.new
#<SingletonTesModuły|nast=tSingletonTest:0xbae20>
ruby> def test2.sizerozmiar
| 10
| end
nil
ruby> test1.sizerozmiar
25
ruby> test2.sizerozmiar
10
</pre>
 
W tym przykładzie <tt>test1</tt> i <tt>test2</tt> należą do tej samej klasy, ale <tt>test2</tt> otrzymał przedefiniowaną metodę <tt>sizerozmiar</tt>, więc zachowują 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 ona 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 różne działania muszą być podjęte, w zależności od naciśniętych przycisków muszą być podjęte 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''.
<noinclude>
{{Przypisy}}
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Kontrola dostępu|poprz=Kontrola dostępu|nastart=Ruby/Moduły|nast=Moduły}}
</noinclude>