- 享元模式:以提高系统性能为目的
- 原理:如果在一个系统中存在多个相同的对象,那么只需共享一份对象的拷贝,而不必为第一次使用都创建新的对象
- 工厂类:维护和创建对象
- 性能提升帮助:1.节省对象开销;2.降低GC压力
- 角色:享元工厂,抽象享元,具体享元类,主函数

*
- 例:


//享元对象接口
public interface IReportManager {
String createReport();
}
//员工账务收入报表
public class FinancialReportManager implements IReportManager {
protected String tenantId=null;
public FinancialReportManager(String tenantId) {
this.tenantId = tenantId;
}
@Override
public String createReport() {
return "this is a financial report";
}
}
//员工个人信息报表
public class EmployeeReportManager implements IReportManager {
protected String tenantId=null;
public EmployeeReportManager(String tenantId) {
this.tenantId = tenantId;
}
@Override
public String createReport() {
return "this is a employee report";
}
}
//享元工厂类
public class ReportManagerFactory {
Map<String,IReportManager> financialReprotManager = new HashMap<String,IReportManager>();
Map<String,IReportManager> employeeReprotManager = new HashMap<String,IReportManager>();
IReportManager getFinancialReportManager(String tenantId){
IReportManager r = financialReprotManager.get(tenantId);
if (r==null){
r=new FinancialReportManager(tenantId);
financialReprotManager.put(tenantId,r);
}
return r;
}
IReportManager getEmployeeReportManager(String tenantId){
IReportManager r = employeeReprotManager.get(tenantId);
if (r==null){
r=new EmployeeReportManager(tenantId);
employeeReprotManager.put(tenantId,r);
}
return r;
}
}
```java
public static void main(String[] args) {
ReportManagerFactory rmf = new ReportManagerFactory();
IReportManager frm =rmf.getFinancialReportManager("A");
frm.createReport();
}
总结:
1.复用性强
2.后台角色加载及对应的角色下的权限菜单列表可用到这种设计模式
享元模式详解
920

被折叠的 条评论
为什么被折叠?



