自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 设计模式之工厂模式

可以发现,我们创建对象的过程存在业务代码里面,当我们需要新增一个咖啡品种的时候,就需要动业务代码,这样不利于维护。我们可以利用工厂思想,将对象创建的过程另置再一个工厂类中,然后再业务层调用工厂来下单咖啡,这样就能将业务层和coffee实现类解耦。如果有一个场景,当我们需要对产品进行品牌标识,一个品牌可以用多个产品,一个产品可以属于多个品牌,如果继续按上面。这样,每个咖啡都有自己对应的工厂制作,解决了工厂和实现类的耦合,这样就完全完全符合“来实现,有N个产品,N个品牌的话,就需要创建N*N个产品类和工厂类。

2024-08-08 22:07:20 178

原创 用静态工厂方法代替构造器

如何对于小型的枚举类型,RegularEnu'm'Set的性能优势不复存在,这个类就有可能再未来发行版中被删除,而这不会造成任何不良的影响,同样的,如果能提升性能,未来的发行版本中可能会添加Enum的第三个甚至第四个实现,客户端即不知道也不关心他们从这个静态工厂方法得到的对象的具体类,他们只关心一点,这类是EnumSet的某个子类。这个例子展示了静态工厂方法在JDBC服务提供者框架中的应用,其中返回的对象的类在编写包含该方法的类时并不一定存在,而是根据具体的实现在运行时动态加载和使用。

2024-08-03 21:12:09 616

原创 rabbitmq

rabbitmq是一个异步处理消息的框架,在一个商品下单的项目中,用户成功下单后,需要扣除金额,产生订单信息,发送短信通知等等,如果整个业务逻辑都写再一个service层,则就会导致请求耗时大大增加,在高并发的场景下,这是不可取的。而rabbitmq则能帮我们解决这个问题。当业务逻辑本身是异步操作时,我们就可以利用mq异步来处理来减少业务执行的耗时时间。

2024-07-25 20:31:25 938

原创 String为什么是不变的

这是因为String字符串一但初始化了,其值就无法改变了,当我们再给他赋值的时候,实际是重新new了一个新的字符串。你会发现,String类和存储value的数组都用了final修饰,这就意味着String不会有子类修改他的行为,他的值也无法被修改。当我们初始化了一个字符串“a”后,先打印他的哈希值,然后,我们再将字符串“a”重新赋值,再打印他的哈希值。第二,可以保证其哈希值不会频繁变更,毕竟string常作于哈希表的键,频繁的变革键值,哈希表性能会很差。要知道String的为什么不变的先要知道。

2024-07-25 20:28:08 208

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除