一、什么是设计模式
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误分析总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验和总结
二、设计模式的作用
为了重用代码、让代码更容易被他人理解、保证代码可靠性
三、什么是单例模式/单态模式
单例模式属于设计模式中的创建型模式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
单例模式 —> 保证一个类仅有一个实例
当类被频繁的创建与销毁时,可以使用单例模式,这样既减少了内存的开销,又避免对资源的多重占用
四、单类模式的两种表示方式以及区别
4.1 懒汉式
1.构造方法私有
2.提供一个静态成员变量[私有],用于保存当前类对象
3.提供一个静态方法【公共】返回创建好的当前类对象
package com.shan.shili;
public class SingleObject {
/**
* 1.构造方法私有
* 2.提供一个静态成员变量【私有】,用于保存当前类对象
* 3.提供一个静态方法【公共】返回创建好的当前类对象
*/
//构造方法私有,这样该类就不会被实例化
private SingleObject() {};
//创建一个对象
private static SingleObject sobj=null;
//获取唯一可用的对象
//当在多线程情况下使用是为了保证当前类对象只有一个我们就需要添加“synchronized”
public static synchronized SingleObject getSingleObject() {
if(sobj==null) {
sobj=new SingleObject();
}
return sobj;
}
public void showMessage() {
System.out.println("Hello World");
}
}
package com.shan.shili;
public class SingletonPatternDemo {
public static void main(String[] args) {
//获取唯一可用对象
SingleObject object=SingleObject.getSingleObject();
//显示信息
object.showMessage();
}
}
运行结果:
4.2 饿汉式
1.构造方法私有
2.提供一个静态成员变量[私有],用于保存创建好的当前类对象
3.提供一个静态方法【公共】返回当前类对象
package com.shan.shili;
public class SingleObject2 {
/*
1.构造方法私有
2.提供一个静态成员变量[私有],用于保存创建好的当前类对象
3.提供一个静态方法【公共】返回当前类对象
*/
private SingleObject2() {};
private static SingleObject2 sobj2=new SingleObject2();
public static synchronized SingleObject2 getSingleObject2() {
return sobj2;
}
public void messAge() {
System.out.println("Hello World");
}
}
package com.shan.shili;
public class SingletonPatternDemo2 {
public static void main(String[] args) {
//获取唯一可用的对象
SingleObject2 object=SingleObject2.getSingleObject2();
//显示信息
object.messAge();
}
}
运行结果:
4.3 区别
懒汉式 | 饿汉式 | |
---|---|---|
资源利用率 | 好 | 差 |
运行速度 | 差 | 好 |