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 21:
</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 ta 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 jest również 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. Aby zmienić definicję prototypu używamy <tt><<</reftt>. Moglibyśmy równoważnie zapisać powyższy przykład w ten sposób:
 
<source lang="ruby">
class << test2
def rozmiar
10
end
end
</source>
 
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.
Linia 27 ⟶ 35:
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/Symbole|poprz=Symbole|nastart=Ruby/Moduły|nast=Moduły}}
</noinclude>