一、介绍
享元模式是一种结构型设计模式,旨在最大程度地减少内存使用或计算开销。这种模式通过共享对多个类似对象实例所需的状态来实现这一目标。
二、基本原理
在享元模式中,存在两种状态:内部状态和外部状态。
- 内部状态:可以被多个对象共享,通常不会改变
- 外部状态:取决于对象的上下文,并且不能被共享。如果需要,它们可以被单独存储并传递给享元对象。
典型的享元模式实现包括一个工厂类,用于创建和管理共享的享元对象。当客户端请求一个享元对象时,工厂类会检查是否已经有符合要求的对象存在,如果存在则返回共享对象的引用,否则创建一个新的对象并加入到共享池中。
三、企业资源管理系统中使用案例
需求:开发一个企业资源管理系统,系统需要管理大量的员工信息,包括姓名、部门、职位等。由于公司规模较大,员工信息可能会有很多重复,因此我们希望使用享元模式来共享相同的员工实例,以最大程度地节省内存空间
- 员工类
// 定义员工类
public class Employee {
private String name;
private String department;
public Employee(String name, String department) {
this.name = name;
this.department = department;
}
public void display() {
System.out.println("Name: " + name + ", Department: " + department);
}
}
- 享元工厂类,
EmployeeFactory
充当享元工厂,负责创建和管理员工的共享实例
import java