小白的理解--工厂方法模式

因为老师在课程里面讲了工厂方法模式,但由于小白我没有听懂,遍查了下资料和博客,下面小白把自己的理解写在下面,如果有问题希望各位大哥多多指出奥。

工厂模式:

工厂模式根据抽象程度的不同分为三种:简单工厂模式(–也是静态工厂模式),工厂方法模式以及抽象工厂模式。
工厂模式的主要优点有:

可以使代码结构清晰,有效地封装变化。在编程中,产品类的实例化有时候是比较复杂和多变的通过工厂模式,将产品的实例化封装起来,使得调用者根本无需关心产品的实例化过程,只需依赖工厂即可得到自己想要的产品。

对调用者屏蔽具体的产品类。如果使用工厂模式调用者只关心产品的接口就可以了,至于具体的实现,调用者根本无需关心。即使变更了具体的实现,对调用者来说没有任何影响。

降低耦合度。产品类的实例化通常来说是很复杂的,它需要依赖很多的类,而这些类对于调用者来说根本无需知道,如果使用了工厂方法,我们需要做的仅仅是实例化好产品类,然后交给调用者使用。对调用者来说,产品所依赖的类都是透明的。

不必在每次调用的时候都创建新的对象–提升性能。

可以返回原类型的任何子类型对象–增加程序的灵活性,减少接口数量。

返回的对象可以随着每次调用而发生变化。

静态工厂方法模式

下面只讨论静态刚才模式的主要构成。

工厂实现。在编程中,工厂实现決定如何实例化产品,是实现扩展的途径,需要有多少种产品,就需要有多少个具体的工厂实现。

产品接口。产品接口的主要目的是定义产品的规范,所有的产品实现都必须遵循产品接口定义的规范。产品接口是调用者最为关心的,产品接口定义的优劣直接決定了调用者代码的稳定性。同样,产品接口也可以用抽象类来代替,但要注意最好不要违反里氏替换原则。

产品实现。实现产品接口的具体类,決定了产品在客户端中的具体行为。

简单工厂只有三个要素,他没有工厂接口,并且得到产品的方法一般是静态的。因为没有工厂接口,所以在工厂实现的扩展性方面稍弱,可以算所工厂方法模式的简化版。

抽象工厂模式

抽象工厂模式:提供接口以创建一组相关/相互依赖的对象,但不需要指明其具体实现类。

通过一个可调用其他多个工厂的工厂创建的不是一个完整产品,而是“产品族”(遵循固定搭配规则的多类产品的实例),得到的结果是:多个不同产品的 object,各产品创建过程对client可见,但“搭配”不能改变。

本质上, Abstract Factory是把多类产品的 factorymethod组合在一起

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值