咕泡-工厂 Factory设计模式笔记

##查看代码:https://gitee.com/jly521/factoryNew.gitgit

我的感悟:redis

  • 设计模式都是处理复杂问题的,若是问题自己很简单,使用设计模式反而累赘,增长了开发的复杂性
  • 遇到最简单的状况,直接 new 
  • 若是建立对象的过程简单(好比封装一些页面须要展现用的对象,数据来源可能来自不一样的地方,能够考虑在构造方法中封装;再好比导出到excel的对象封装),可是须要匹配不一样状况,返回不一样对象时:考虑使用简单工厂
  • 若是遇到对象建立过程复杂(好比数据库链接这样的复杂对象,不只仅牵涉到new 一个对象这么简单),这样须要把建立过程抽象出来,统一编写,对外提供干净的接口调取便可:考虑使用工厂模式
  • 若是遇到对象建立过程复杂、并且多对象匹配问题(好比默认去缓存库redis取,若是缓存库娶不到,去oracle数据库取),在上一条咱们已经把redis、oracle的建立作成了工厂,此时须要对两者统一再抽象一层:考虑使用抽象工厂
  • 另外,相似汽车的建造也能够理解为抽象工厂模式,由于每一个零件,好比轮胎、发动机等的建造都是复杂的过程,均可以是工厂模式去实现建立过程,生产整个汽车在工厂模式(可能已是抽象工厂模式)上面再作一层抽象

简单工厂模式(Factory)数据库

  • 作静态工厂方法(StaticFactory Method)模式,但不属于23 种设计模式之一
  • 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该建立哪个产品类
  • Spring 中的BeanFactory 就是简单工厂模式的体现,根据传入一个惟一的标识来得到Bean 对象,可是否是在传入参数后建立仍是传入参数前建立这个要根据具体状况来定

工厂方法模式(Factory Method)设计模式

应用场景:缓存

  • 一般由应用程序直接使用new 建立新的对象,为了将对象的建立和使用相分离,采用工厂模式,即应用程序将对象的建立及初始化职责交给工厂对象
  • 通常状况下,应用程序有本身的工厂对象来建立Bean
  • 若是将应用程序本身的工厂对象交给Spring 管理,那么Spring 管理的就不是普通的Bean,而是工厂Bean

  • 工厂生产相应的产品

抽象工厂模式

  • 什么时候使用:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品
  • 如何解决:在一个产品族里面,定义多个产品。每一个具体的工厂负责一个产品族。抽象工厂的返回值为最高级抽象产品

很是适合解决两个维度的组合产品的构造问题,取其中一个维度做为产品族,另一个维度做为产品族中具体的多个产品
 oracle

相关文章
相关标签/搜索