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设计模式中单例模式讲解的详细内容,更多请关注其它相关文章!

开上一部车,装着我们的故事,

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

相关文章:

你感兴趣的文章:

标签云: