JAVA 设计模式- 简单工厂和工厂方法小思考

概述:

简单工厂模式:一个工厂可以创建多个产品(通过if else 来进行产品路由)

工厂方法模式:一个具体工厂只创建一个具体产品(通过多态机制进行产品路由不用修改之前工厂的内容,但是每增加一个产品都要新增工厂。

理解:

1、在工厂方法模式中进行新产品添加时需要同时增加新工厂和新产品。工厂和产品一一对应那么为什么不直接new产品?

逻辑上产品和工厂的所做的事情是不一样的,产品是一个结果,而工厂是通过逻辑生产产品,所以即便是产品和工厂一一对应,但是工厂并不能省略。因为生产产品之前需要很多操作,而这些操作需要通过工厂去实现。

2、简单工厂和工厂方法优缺点对比

简单工厂

优点:实现简单更容易理解,实际的性能开销更小。

缺点:1、所有产品的生产都在一个工厂内,多产品的生产耦合在一起随着后期产品变多工厂变的杂乱。2、后期新增产品需要再次在原有工厂中添加if else

工厂方法:

优点:1、不同产品生产逻辑放在不同的子工厂中,生产逻辑相互独立耦合性低。2、后期添加新产品只需要新增而不需要修改之前的内容

缺点:理解难度相比增大,实际性能开销更小。

项目中应用:

1、log4j2其实就是一个大工厂,通过不同的类名返回不同的logger进行日志的打印,包括我们的spring容器其实也可以理解为一个超级工厂对我们的类进行生产

2、spring项目中对象注入一个map<String,Class>的方式就可以理解为一个简单工厂,spring把符合这个类型的对象放入这个Map,引用名字作为Map的Key实现了一个简单工厂模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值