一、什么是享元模式
运用共享技术有效地支持大量细粒度的对象。
二、享元模式角色
1、抽象享元角色(Flyweight):所有具体享元类的父类,规定一些需要实现的公共接口。
2、具体享元角色(ConcreteFlyweight): 抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。
3、享元工厂角色(FlywerightFactory):负责创建和管理Flyweright对象。
三、享元模式代码
1、抽象享元角色(Flyweight):
public abstract class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2、具体享元角色(ConcreteFlyweight):
public class Teacher extends Person {
private String number;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
3、享元工厂角色(FlywerightFactory):
public class School {
private HashMap<String,Teacher> teacherHashMap = new HashMap<>();
public Teacher getTeacher(String number) {
Teacher teacher = teacherHashMap.get(number);
if (teacher == null){
teacher = new Teacher();
teacher.setNumber(number);
teacherHashMap.put(number,teacher);
}
return teacher;
}
}
4、客户端
public class MainClass {
public static void main(String[] args) {
School school = new School();
Teacher teacher1 = school.getTeacher("001");
Teacher teacher4 = school.getTeacher("001");
System.out.println(teacher1 == teacher4);
}
}