设计模式--单例模式
作者:互联网
设计模式--单例模式
1、单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点
2、单例模式的结构
角色
单例类(Singleton):只可以创建出一个实例
类图:
3、单例模式举例
Singleton.java
1 package com.nick.pattern.singleton;
2 /**
3 * 饿汉式单例模式
4 * @author nick
5 */
6 public class Singleton {
7
8 //JVM加载Singleton时就创建instance对象
9 private static Singleton instance = new Singleton();
10
11 private Singleton(){
12 //设置构造方法的权限为private
13 }
14
15 public static Singleton getInstance() {
16 return instance; //为外部类提供获得instance对象的方法
17 }
18
19 public void say(){
20 System.out.println("单例模式1");
21 }
22 }
Singleton2.java
package com.nick.pattern.singleton;
/**
- 懒汉式单例模式
@author nick
*/
public class Singleton2 {
private static Singleton2 instance; //唯一的对象private Singleton2(){
//构造方法设置为private权限
}public static synchronized Singleton2 getInstance(){ //同步方法,避免多线程的问题
if(instance == null){
instance = new Singleton2();//只有对象对存在的时候,才会创建对象(懒汉式)
}
return instance;
}public void say(){
System.out.println("单例模式2");
}
}
Application.java
package com.nick.pattern.singleton;
/**
- 主程序
*/
public class Application {
public static void main(String[] args) {
//Singleton s = new Singleton(); //error,不能创建新的对象
Singleton s1 = Singleton.getInstance(); //只能把单例模式中创建好的对象赋值给s
s1.say();
Singleton2 s2 = Singleton2.getInstance();
s2.say();
}
}
运行结果
4、单例模式的优缺点
优点:单例类的唯一实例由单例类本身来控制,所以可以很好的控制用户何时访问它。
标签:Singleton,模式,instance,private,单例,Singleton2,设计模式,public 来源: https://www.cnblogs.com/sinlearn/p/11881386.html