设计模式 创建型模式之单例模式

来源:互联网 发布:Java捕获控制台 编辑:程序博客网 时间:2024/05/19 19:42

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());
}
}






0 0
原创粉丝点击