- 博客(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关注的人