学习到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设计模式中单例模式讲解的详细内容。