简单工厂模式:
根据具体的数据返回某一个类的一个实例,通常它返回的这些类实现了同一个接口。
一、意图
把类(继承自同一个接口的一类)的实例化放到工厂中进行,让工厂来选择具体实例化本接口的哪一个类。
二、适用场景
四、应用场景举例
项目中,要设计实现一个通用数据采集系统,分别在呼伦湖,无量山、三江源保护区使用,一开始没想到保护区的增加更换,直接写代码里了,每增加一个保护区都需要重新更改保护区logo、保护区名称、文件系统等等,反复更改很烦人,于是代码重构,改用工厂模式实现。
//抽象接口
public interface OrgInfo{
public String getOrgName();//获取机构名
public String getOrgDetail();//获取机构描述
}
//具体机构 呼伦湖
public class ReserveHLH implements OrgInfo {
private String orgName = "呼伦湖自然保护区采集系统";//
private String orgDetail = "呼伦湖";
public String getOrgName() {
return orgName;
}
}
//三江源....
public class ReserveSJY implements OrgInfo {
...
}
//工厂
public class SystemFilesFactory{
public OrgInfo getOrgInfo(){//返回值为接口类型
return new ReserveHLH();//返回具体的类
}
}
...
}
完成之后顿觉神清气爽,当用户需要添加新的保护区的时候,不必更改现有的保护区代码,只需要新增加一个类即可。