享元模式
它的好处是避免不必要的对象的产生,提高性能
1. 多个人要去查看同一个内容的东西,只创建一次,共享这张表
2. 如下图:
3.具体实现的代码如下:
public interface IReportManager {
public String createReport();
}
public class FinancialReportManager implements IReportManager{
protected String tenantId = null;
public FinancialReportManager(String tenantId) {//租户ID
super();
this.tenantId = tenantId;
}
@Override
public String createReport() {
return "This is a financial report";
}
}
public class EmployeeReportManger implements IReportManager {
protected String tenantId = null;//租户ID
public EmployeeReportManger(String tenantId) {
super();
this.tenantId = tenantId;
}
@Override
public String createReport() {
return "This is a employee report";
}
}
public class ReportMangerFactory {
Map<String, IReportManager> financialReportManger = new HashMap<String, IReportManager>();
Map<String, IReportManager> employeeReportManger = new HashMap<String, IReportManager>();
IReportManager getFinancialReportManger(String tenantId) {
IReportManager r = financialReportManger.get(tenantId);
if (r == null) {
r = new FinancialReportManager(tenantId);
financialReportManger.put(tenantId, r);
}
return r;
}
IReportManager getEmployeeReportManger(String tenantId) {
IReportManager r = financialReportManger.get(tenantId);
if (r == null) {
r = new EmployeeReportManger(tenantId);
employeeReportManger.put(tenantId, r);
}
return r;
}
}
测试类:
public class MainFlyWeight {
public static void main(String[] args) {
ReportMangerFactory rmf = new ReportMangerFactory();
IReportManager rm = rmf.getFinancialReportManger("A");
System.out.println(rm.createReport());
}
}