今天学习一下设计模式中最简单的单例模式。
单例模式
(1).首先介绍一下什么是单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
(2).单例模式的要求
实现要求主要有以下几点:
1。单例类不能在其它类中实例化,只能被自身实例化;
2.拥有一个保存类的实例的静态成员变量;
3.一个静态的公共方法用于实例化这个类,并访问这个类的实例;
(3)现在我们来实现一下,看代码:
package Class_jicheng;
public class SinglePattern {
private static SinglePattern sp;
private static String name;
private static String id;
private SinglePattern() {}
public SinglePattern(String name,String id) {
this.name = name;
this.id =id;
}
public static String getName() {
return name;
}
public static void setName(String name) {
SinglePattern.name = name;
}
public static String getId() {
return id;
}
public static void setId(String id) {
SinglePattern.id = id;
}
public static SinglePattern getInstance() {
if(sp == null) {
sp = new SinglePattern();
}
return sp;
}
}
测试:
package Class_jicheng;
public class TestSinglePattern {
public static void main(String[] args) {
SinglePattern s =SinglePattern.getInstance();
SinglePattern s1 =SinglePattern.getInstance();
System.out.println(s);
System.out.println(s1);
s.setName("张三");
System.out.println(s.getName());
s.setName("李四");
System.out.println(s.getName());
}
}
结果:
(4)现在就要说一下为什么要使用单例模式
在测试类中创建了两个对象,在调用的时候就会虚拟机就会给对象赋值,赋值的时候由于是创建新对象会赋给两个不同的地址,而类是同一个,不停的进行创建对象,创建一个对象就会分配一个内存,这样就会很不好,占用了很多内存,程序运行结束后产生的垃圾也多,所以使用了单例模式使对象的地址值不变。如图:
核心是:
我们输出两个对象的地址值看一下:
地址值一样吧。这就是单例模式的好处。
当然还有其他好处,简单举一个例子。
如果你要用Java写一个JFrame窗体。写完运行弹出窗体。接着你在运行,这时候又弹出一个窗体,反复几次是不是就是整个屏幕都是窗体了,这就是界面的不友好了,所以可以使用单例模式解决这种类似的问题。
今天就到这了,感谢阅读!!!