Was ich gelesen habe, ist Unveränderlichkeit bedeutet, dass der einmal zugewiesene Wert konstant bleibt, d. H. Sobald er zugewiesen ist, wird er als derselbe Wert über den Code hinweg reflektiert.Löst Immutability und Singleton den gleichen Zweck?
Meistens wird die Unveränderlichkeit im Functional Programming-Paradigma in Multi-Thread-Umgebungen verwendet.
Aber.
Hat auch Singletonmuster den gleichen Zweck löst unter der Singleton in Java geschrieben,
Bitte zu finden,
package com.main;
class Student{
private Student(){
}
public static Student INSTANCE;
static{
INSTANCE = new Student();
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString(){
return "Student is "+this.name;
}
}
public class SingletonTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Student student = Student.INSTANCE;
student.setName("Arnold");
student = Student.INSTANCE;
student.setName("Kevin");
student = Student.INSTANCE;
student.setName("Jim");
student = Student.INSTANCE;
student.setName("Falcon");
student = Student.INSTANCE;
student.setName("Sarvik");
student = Student.INSTANCE;
System.out.println(student);
}
}
Die Ausgabe des obigen Codes ist
Student is Sarvik
In einer gleichen So, ich habe Singleton auch in javaScript geschrieben,
wie folgt
var Student = (function(){
var name = "";
var obj = {
setName : function(studentName){
name = studentName;
},
getName : function(){
return name;
}
}
return {
INSTANCE : obj
}
})();
var student = Student.INSTANCE;
student.setName("Arnold")
student = Student.INSTANCE;
student.setName("Kevin");
student = Student.INSTANCE;
student.setName("Jim");
student = Student.INSTANCE;
student.setName("Falcon");
student = Student.INSTANCE;
student.setName("Sarvik");
student = Student.INSTANCE;
console.log("Student is "+student.getName());
der Ausgang als
[email protected]:~/myPractise/JavaScript-DesignPatterns$ node singleton.js
Student is Sarvik
[email protected]:~/myPractise/JavaScript-DesignPatterns$
Sowohl folgt (d.h. javaScript und java) Implementierung von Singleton Muster Sie können sehen, dass der Zustand des Objekts bleibt gleich, es ändert sich nicht.
Auch wenn wir den Wert des Objekts zurücksetzen, gibt der Ausgang den letzten Reset-Wert.
So verwendet Singleton Muster ich in meinem Code des Objekts "Student" Unveränderlichkeit erreicht?
http: // Stapelüberlauf.com/questions/13784244/sind-all-immutable-objects-singleton-instances – Unknown
Singletonität und Unveränderlichkeit sind orthogonal. Ein Singleton kann veränderlich oder unveränderlich sein; Ein Nicht-Singleton kann veränderbar oder unveränderlich sein. Ein Singleton * muss jedoch * fadensicher sein, wenn er in mehreren Threads verwendet wird. unveränderliche Objekte sind von Natur aus Thread-sicher. –
Ihre 'Student'-Klasse ist eindeutig nicht unveränderbar: Sie haben eine Setter-Methode. –