obiect individual Specializarea

Sunt un solipsist și, sincer, surprins că cei mai mulți dintre noi nu sunt.

Din scrisoarea obținută Bertrand Russell

In cele mai multe limbi orientate obiect, toate obiectele din aceeași clasă au același comportament. Clasa - este un șablon care generează obiecte cu aceeași interfață la fiecare apel constructor.

Ruby se comportă la fel, dar nu e sfârșitul istoriei. După ce a primit un obiect, puteți schimba comportamentul lor pe zbor. De fapt, asociați cu obiectul subclasa privat, anonim, toate metodele de o subclasă a originalului sunt încă disponibile, dar există, de asemenea, comportamentul care este unic pentru obiectul. Deoarece acest comportament este inerent într-un anumit obiect, acesta se produce doar o singură dată. Ceva care apare doar o singură dată, numit singlet (Singleton). Deci, avem o metode singulet pieptare și clase.

Cuvântul „s“ poate fi o sursă de confuzie, deoarece este folosit într-un sens diferit - ca numele unui model de design bine cunoscut faptul că descrie o clasă pentru care nu poate exista decât un singur obiect. Dacă sunteți interesat de o astfel de utilizare, biblioteca de contact singleton.rb.

În exemplul următor, vom vedea două obiecte, atât linia. Pentru al doilea, vom adăuga upcase metodă care înlocuiește o metodă existentă cu același nume.

def b.upcase # Creați metoda singlet.

pune a.upcase # HELLO

pune b.upcase # Goodbye

Adăugarea unei metode de a singletul obiect singlet generează o clasă pentru obiect, în cazul în care nu a fost încă stabilită anterior. clasa părinte Singlet este clasa obiectului original. (Putem presupune că o subclasa anonimă a clasei originale.) Dacă doriți să adăugați la obiect sunt mai multe metode pe care le puteți crea clasa singlet în mod explicit:

def upcase # Creați metoda singlet.