一个工厂用于创建对象,如果对象在指定范围内存在(singleton,thread,request,session),则不创建新对象,而是使用之前创建的对象。

UML类图如下:


解耦设计--职责的细化
 每个实现类中都有一样创建对象的过程,因此将生成对象方法抽成父类:

 

 父类ObjectFactoryImpl实现了对象创建的过程,在创建对象之前(create方法中)首先调用抽像方法getObjectFromCache()来判断是否已存在该对象,如果已存在就直接返回,不存在就创建对象并调用putObjectToCache 方法存入缓存,已使下次使用时能直接获取。

 


解耦设计--职责的细化
 从上图看出,每一个实现类都负责了二个功能:

 1.对象的创建

 2.缓存对象

 

与类的单一职责原则违背,且这两个职责没有紧密到分不开的程度,且实现类不应该算做接口ObjectFactory的一个子类,因为实现类的职责更加关注于Cache 而不是Create。

 

因此将继承关系改成关联关系:



解耦设计--职责的细化
 
 

 

 

 




 

 

 



 

 

 

  

相关文章:

  • 2021-08-18
  • 2021-12-13
  • 2021-09-26
  • 2021-12-18
  • 2021-12-01
猜你喜欢
  • 2021-08-27
  • 2021-09-01
  • 2022-12-23
  • 2021-08-29
  • 2022-12-23
相关资源
相似解决方案