【每日学设计模式——结构型模式】享元模式

本文介绍了享元模式的概念,阐述其工厂加缓存的设计,探讨了优点如快速响应和资源节省,以及可能增加的系统复杂性。适用于大量重复对象和区分条件的场景,如校验token和用户信息获取。通过ShapeFactory示例展示了模式应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

菜鸟教程链接:享元模式

概念

享元模式类似于工厂+缓存的模式,当创建对象的时候,通过条件判断缓存中有没有对应对象,如果有直接取出缓存,如果没有则新建并放入缓存中,再返回。

优缺点

优点:

  1. 创建对象时利用了缓存,提升了响应速度。
  2. 节约了资源。

缺点:

  1. 提升了系统的复杂度。

适用场景

缓存场景,例如校验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;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值