Heim  >  Artikel  >  Java  >  Erläuterung des Singleton-Musters in Java-Designmustern

Erläuterung des Singleton-Musters in Java-Designmustern

巴扎黑
巴扎黑Original
2017-07-21 17:03:451392Durchsuche

Ich habe erfahren, dass es in Java 23 Entwurfsmuster gibt, die den meisten Menschen bekannt sind, wiederholt verwendet werden und konventionell sind. Jedes Entwurfsmuster stellt ein Problem dar, das im Projekt wiederholt auftritt, sodass durch die sinnvolle Verwendung von Entwurfsmustern viele Probleme perfekt gelöst werden können.

Es ist notwendig, Java-Entwurfsmuster zu lernen. Obwohl Vererbung und Schnittstellen objektorientiert noch nicht erlernt wurden, kann das Singleton-Muster in den 23 Entwurfsmustern bereits verstanden werden.

Singleton ist ein häufig verwendetes Designmuster. In Java-Anwendungen kann ein Singleton-Objekt sicherstellen, dass nur eine Instanz des Objekts in einer JVM vorhanden ist. Es gibt zwei spezifische Ausdrucksformen:

package 面向对象;//单例设计模式第一种public class Singleton 
{public static void main(String[] args)
    {
    SingletonDemo a=SingletonDemo.getInstance();
    }
}class SingletonDemo
{private static SingletonDemo a =null;private SingletonDemo(){}public static SingletonDemo getInstance()
    {if(a==null)
        {
            SingletonDemo a=new SingletonDemo();
        }return a;
    }
}

Auf diese Weise können Sie sehen, dass neue Objekte nur erstellt werden, wenn die Methode aufgerufen wird, aber das ist einfach Bei der Verwendung im Multithreading treten Probleme auf, daher wird im Allgemeinen die folgende Methode für die Entwicklung verwendet.

 1 package 面向对象; 2  3 public class Singleton_2 
 4 { 5     public static void main(String[] args) 6     { 7         Singleton_2Demo a=Singleton_2Demo.getInstance(); 8     } 9 }10 11 class Singleton_2Demo12 {13     private Singleton_2Demo(){}14     private static Singleton_2Demo a=new Singleton_2Demo();15     public static Singleton_2Demo getInstance()16     {17         return a;18     }19 }

Diese Methode ist einfach und es besteht keine Notwendigkeit, Multithreading-Probleme zu berücksichtigen

Dadurch Entwurfsmuster, wir können das vorherige verbessern. Die objektorientierten Übungen, die ich während des Studiums geschrieben habe, wurden angepasst, um das Singleton-Modell zu implementieren.

Originalcode:

package 面向对象; class Student 
{    private String name;private int number;private String sex;private boolean learn;private String a;
    Student()
     {
         name="未知";
         number=000;
         sex="未知";
         learn=false;
         a="未知";
     }     public void setName(String name)
     {         this.name=name;
     }     public void setNumber(int number)
     {         this.number=number;
     }     public void setSex(String sex)
     {         this.sex=sex;
     }     public void setLearn(boolean learn)
     {         this.learn=learn;
     }     void scan()
    {if(this.learn==true)
        {
            a="在学习";    
        }else{
            a="不在学习";
        }    
         System.out.print("姓名:"+this.name+" 学号:"+this.number+" 性别;"+this.sex+" 是否在学习:"+a);
    }
    
} class Data
 {     public static void main(String[] arg)
     {
         Student XiaoMin=new Student();
         XiaoMin.setName("小明");
         XiaoMin.setNumber(13023);
         XiaoMin.setSex("男");
         XiaoMin.setLearn(true);
         XiaoMin.scan();
     }
 }

Einzelfallmodus:

package 面向对象;//实现单例设计模式
 class Student_1 
{    private String name;private int number;private String sex;private boolean learn;private String a;     private Student_1()
     {
         name="未知";
         number=000;
         sex="未知";
         learn=false;
         a="未知";
     }     private static Student_1 b=new Student_1();     public static Student_1 getInstance()
     {         return b;
     }     public void setName(String name)
     {         this.name=name;
     }     public void setNumber(int number)
     {         this.number=number;
     }     public void setSex(String sex)
     {         this.sex=sex;
     }     public void setLearn(boolean learn)
     {         this.learn=learn;
     }     void scan()
    {if(this.learn==true)
        {
            a="在学习";    
        }else{
            a="不在学习";
        }    
         System.out.print("姓名:"+this.name+" 学号:"+this.number+" 性别;"+this.sex+" 是否在学习:"+a);
    }
    
} class Data_2
 {     public static void main(String[] arg)
     {
         Student_1 XiaoMin=Student_1.getInstance();
         XiaoMin.setName("小王");
         XiaoMin.setNumber(13023);
         XiaoMin.setSex("男");
         XiaoMin.setLearn(true);
         XiaoMin.scan();
     }
 }

Das obige ist der detaillierte Inhalt vonErläuterung des Singleton-Musters in Java-Designmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn