​​十、享元模式(Flyweight)_开发者


一、什么是享元模式

        运用共享技术有效地支持大量细粒度的对象。


二、享元模式角色

    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);

}
}