简单工厂模式:一个工厂可以创建多个产品(通过if else 来进行产品路由)
工厂方法模式:一个具体工厂只创建一个具体产品(通过多态机制进行产品路由不用修改之前工厂的内容,但是每增加一个产品都要新增工厂。
理解:1、在工厂方法模式中进行新产品添加时需要同时增加新工厂和新产品。工厂和产品一一对应那么为什么不直接new产品?
逻辑上产品和工厂的所做的事情是不一样的,产品是一个结果,而工厂是通过逻辑生产产品,所以即便是产品和工厂一一对应,但是工厂并不能省略。因为生产产品之前需要很多 *** 作,而这些 *** 作需要通过工厂去实现。
2、简单工厂和工厂方法优缺点对比
简单工厂
优点:实现简单更容易理解,实际的性能开销更小。
缺点:1、所有产品的生产都在一个工厂内,多产品的生产耦合在一起随着后期产品变多工厂变的杂乱。2、后期新增产品需要再次在原有工厂中添加if else
工厂方法:
优点:1、不同产品生产逻辑放在不同的子工厂中,生产逻辑相互独立耦合性低。2、后期添加新产品只需要新增而不需要修改之前的内容
缺点:理解难度相比增大,实际性能开销更小。
项目中应用:1、log4j2其实就是一个大工厂,通过不同的类名返回不同的logger进行日志的打印,包括我们的spring容器其实也可以理解为一个超级工厂对我们的类进行生产
2、spring项目中对象注入一个map
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)