菜鸟教程链接:享元模式
概念
享元模式类似于工厂+缓存的模式,当创建对象的时候,通过条件判断缓存中有没有对应对象,如果有直接取出缓存,如果没有则新建并放入缓存中,再返回。
优缺点
优点:
- 创建对象时利用了缓存,提升了响应速度。
- 节约了资源。
缺点:
- 提升了系统的复杂度。
适用场景
缓存场景,例如校验token场景,通过用户ID获取用户信息的地方。任何系统大量用到重复或相似对象,并有确定的条件区分的地方,都可以用的该设计模式。
示例代码
import java.util.HashMap;
public class ShapeFactory {
private static final HashMap<String, Shape> circleMap = new HashMap<>();
// color可视为shape对象的key值,通过该值拿取缓存。
public static Shape getCircle(String color) {
Circle circle = (Circle)circleMap.get(color);
if(circle == null) {
circle = new Circle(color);
circleMap.put(color, circle);
System.out.println("Creating circle of color : " + color);
}
return circle;
}
}