Co to jest niezmienny obiekt?
W programowaniu zorientowanym obiektowym obiektem niezmiennym jest obiekt, którego właściwości nie można zmienić po jego utworzeniu. Natomiast większość obiektów jest zmiennymi obiektami, co oznacza, że niektóre lub wszystkie ich właściwości można swobodnie zmieniać po utworzeniu. Różnorodne języki komputerowe mają możliwość tworzenia niezmiennych obiektów, w tym Java, C ++, Erlang, Tcl i Scala.
Niezmiennym obiekt może być utworzony na dwa sposoby: poprzez tworzenie klasy, która jest z definicji niezmienna lub poprzez wyraźne deklarowane skądinowo zmienne obiekt, który jest niezmienny. Metodologia tworzenia niezmiennej klasy różni się w zależności od używanego języka komputerowego. Niezależnie od języka, niezmienna klasa nie musi mieć żadnych metod, które mogą zmienić swoje wewnętrzne dane i nie ma możliwości zmiany metod - tj. Zastąpienie lub przeciążenie - w sposób, który zmieniłby jego wewnętrzne dane. Jest to bardziej skomplikowane z dwóch podejść. Aby utworzyć niezmienny obiekt z innychZ drugiej strony, zmienny obiekt można często zastosować słowo kluczowe, aby wyznaczyć obiekt jako niezmienny.
Jako przykład niezmienne tworzenie obiektów w Javie w dużej mierze opiera się na „ostatecznym” słowie kluczowym. Szybkim sposobem na uczynienie klasy w Javie jest ogłoszenie klasy, a także wszystkich jej metod i członków danych, ostatecznie. Podobną strategię można również zastosować w C ++ z słowem kluczowym „const”. Te podejścia, w zależności od treści klasowych, mogą jednak nie być najlepsze. Ogólnie rzecz biorąc, obiekty mogą być zwykle niezmienne poprzez staranne utrzymanie ich danych wewnętrznych.
Tworzenie niezmiennego obiektu za pomocą słowa kluczowego, jak w powyższym przykładzie, jest często znacznie łatwiejsze niż pisanie całej klasy, aby być niezmiennym. Zastosowanie tego podejścia ma jednak swoje niebezpieczeństwa. Podczas wyraźnego wyznaczenia niezmiennego obiektu w ten sposób ważne jest, aby programista upewnił się, że wszystkie odpowiednie właściwościa dane zostały najpierw włączone do obiektu. Poleganie na niekompletnym obiekcie może być niebezpieczne, szczególnie jeśli brakuje mu istotnej informacji.
Jeśli obiekt jest zmienny, ale wymaga poprawnego utworzenia niezmiennych danych, niezmienne dane muszą zostać zainicjowane, zanim będzie można stworzyć zmienny obiekt. Niezmienne obiekty są zawsze niezmienne, niezależnie od tego, czy są to wartości danych, czy duże obiekty, i zawsze muszą być traktowane jako takie. Ogólnie rzecz biorąc, niezmienny obiekt nie może być zmuszony po jego utworzeniu, chociaż czasami można je kopiować jako zmienne obiekty. Zwykle można założyć, że niezmienny obiekt i dowolne z jego kopii są również niezmienne, co może zapobiec problemom z danymi lub pamięci.