【设计模式】简单工厂模式

定义

它属于类创建型模式,可以根据参数的不同返回不同类的实例,它专门定义一个类负责创建其他类的实例,被创建的实例通常都有共同的父类

结构

1.工厂

负责实现创建产品的内部逻辑,可以被外界直接调用,创建所需的对象

2.抽象产品

工厂类创建的所有对象的父类,封装了所有产品的公共方法

3.产品

工厂所创建出来的目标,所有产品都是某个具体类的实例,实现了抽象产品中的抽象方法

以运算为例

工厂类:OperationFactory

在这里插入图片描述

此处只给出了加法运算,而想要添加其他运算,只需要,创建一个继承抽象类的运算类,在switch中增加一个case即可,注意此处为statitc方法,所以也称其为静态工厂模式

抽象产品类:Operation

在这里插入图片描述

此处给出了一个运算的抽象类,公共方法有get和set方法,还有一个根据运算类型的不同而需要重写的getResult方法。

产品类:OperationAdd

在这里插入图片描述

继承Operation类并重写getResult方法

客户端:Client

在这里插入图片描述

这里只作演示,我们只需要提供"+" 1 2这三个参数即可让工厂工作

结果

在这里插入图片描述

总结

当我们需要更加具体类型的运算时,只需要去到具体类型的类中修改,想要增加其他运算时,就增加相应的运算子类并且在工厂中增加该运算分支。

优点

1.免除了客户端直接创建产品对象的责任
2.客户端无需直到所创建的具体参数类名,只需要提供相应参数即可
3.通过引入配置文件可以在不修改客户端代码情况下更换和增加新的具体产品

缺点

1.工厂类集中了所有产品的创建逻辑,一旦不能工作整个系统都会受到影响
2.对象较多时系统中存在的类较多
3.一旦提娜佳新产品就得修改工厂逻辑,破坏开闭原则
4.由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构

适用环境

1.工厂负责创建的对象比较少
2.客户端只需要知道对应参数时

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值