1 基础知识
1.1 标准定义
单例模式标准定义:保证一个类仅有一个实例, 并提供一个访问它的全局访问点。
1.2 分析和说明
单例模式属于创建型 模式,单例模式确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且其他类可以通过某种 方法访问该实例。单例模式只应在有真正的“单一实例”的需求时才可使用。单例模式只有一个角色,就是要进行单例的类。
2 应用场景举例
比如公司规定,一个市场用户只能由一个市场人员跟踪。最初用户联系公司的时候,任命一个市场人员负责这个用户。以后这个用户再继续联系公司,全部统一由指定的这个市场人员来负责。
在这里可以把SaleMan就是一个要求单例的类,ServiceManager是一个提供单例方法的类。其类图如下:
单例模式实现的顺序图,实现顺序描述:(1)创建一个销售员实例对象;(2)创建一个服务实例对象;(3)最初向服务对象要求服务;(4)返回销售员实例对象;(5)多次向服务对象提出服务,返回同一个销售员实例对象。
3,Java的实现程序代码
ServiceManager类的程序代码如下:
public class ServiceManager {
private SaleMan saleMan = null;
public ServiceManager(SaleMan saleMan){
this.saleMan = saleMan;
}
public SaleMan getSaleManService(){
if(saleMan != null)return saleMan;
return saleMan;
}
}
SaleMan类文件程序代码如下:
public class SaleMan {
private String name;
private String service;
public SaleMan(String name ,String service){
this.name = name;
this.service = service;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getService() {
return service;
}
public void setService(String service) {
this.service = service;
}
}
单例模式测试程序代码如下:
public class Client {
public static void main(String[] srgs){
SaleMan saleMan = new SaleMan("xiaoliu", "xiaoliu de fu wu");
ServiceManager service = new ServiceManager(saleMan);
System.out.print("第一次获取服务");
SaleMan saleman = service.getSaleManService();
System.out.println(saleman.getService());
System.out.print("第二次获取服务");
saleman = service.getSaleManService();
System.out.println(saleman.getService());
}
}