学习到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 }这种方式简单,不用考虑多线程的问题
立即学习“Java免费学习笔记(深入)”;
通过这个设计模式对之前学习时写的面向对象的练习调整了一下,实现了单例的模式。
原代码:
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设计模式中单例模式讲解的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号