您好,欢迎访问一九零五行业门户网

java设计模式中单例模式讲解

学习到java一共有23种设计模式,设计模式是被大多数人知晓,反复使用,约定俗成的代码经验总结。每种设计模式都代表了在项目中会重复发生的问题,所以合理的运用设计模式可以完美的解决很多问题。
学习java的设计模式是很有必要的。虽然在面向对象还没学习到继承和接口,但是23中设计模式中的单例模式已经可以了解了。
单例对象(singleton)是一种常用的设计模式。在java应用中,单例对象能保证在一个jvm中,该对象只有一个实例存在。具体有两种表现形式:
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;     } }
这种方式可以看出在调用方法时才创建新的对象,但是在多线程时容易产生问题,所以一般开发用的是下面的一种方式。
 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 }
这种方式简单,不用考虑多线程的问题
通过这个设计模式对之前学习时写的面向对象的练习调整了一下,实现了单例的模式。
原代码:
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();      }  }
单例模式:
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();      }  }
以上就是java设计模式中单例模式讲解的详细内容。
其它类似信息

推荐信息