设为首页 加入收藏

TOP

工厂模式,从第三方登录说起(三)
2019-09-18 11:11:17 】 浏览:105
Tags:工厂 模式 第三方 登录 说起
模式的一种。工厂方法模式与简单工厂模式的区别在于,在工厂方法模式中,实例的创建不是集中在一个工厂中,而是抽取出来了一个工厂父类,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。就像我们的IdentityProviderFactory类和AliPayIdentityProviderFactory类。

跟简单工厂模式一样,我们对工厂方法模式也进行抽象一下,工厂方法模式有下面四个成员:

  • 抽象产品:定义好产品具有的属性方法,例如IdentityProvider
  • 具体产品:具体的产品实现,例如AliPayIdentityProvider
  • 抽象工厂:定义好工厂的抽象方法,例如IdentityProviderFactory
  • 具体工厂:具体的生产工厂,例如AliPayIdentityProviderFactory

老惯例,一起看看工厂方法模式的UML图,加深印象:

工厂方法模式好处在我们重构第三方账号登录模块的时候,我们已经体验到了,工厂方法模式的好处可不止那么一点,一起来看看工厂方法模式有哪些优点?

工厂方法模式的优点

  • 工厂方法模式的扩展性非常强,在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,而只要添加一个具体工厂和具体产品,就可以拥抱变化,就像如果我们现在要接入钉钉账号登陆,我们只需要创建DingDingIdentityProviderFactoryDingDingIdentityProvider就好了
  • 良好的封装性,代码结构清晰。调用者需要一个具体的产品对象时,只需要知道这个产品的类名就可以了,不需要知道具体的创建过程,降低的模块之间的耦合
  • 屏蔽产品类,产品类的实现如何变化,调用者不需要关系,它只关系产品的接口,只要接口保持不变,系统中的上层模块就不需要变化。所以工厂方法模式经常用来解耦,高层模块只需要知道产品的抽象类,实现类不需要关系,这符合迪米特法则,也符合依赖倒置原则。

工厂方法模式虽然有诸多好处,但是它也有不少缺点,因为不可能有完美无缺的设计模式,那我们一起来看看工厂方法模式的缺点。

工厂方法模式的缺点

  • 增加了系统复杂度,我们将工厂类拆分出来,无形之中给我们的系统带来了复杂性
  • 增加了开发量,在使用简单工厂模式时,我们只想要添加一个case分支,现在则需要创建类
  • 由于考虑到系统的可扩展性,需要引入抽象层,在客户端代码中均使用抽象层进行定义,增加了系统的抽象性和理解难度,且在实现时可能需要用到DOM、反射等技术,增加了系统的实现难度

总结

本文主要简单的介绍了一下简单工厂模式和工厂方法模式这两种设计模式,通过第三方账号登陆这个案例,从简单工厂模式开始,一步一步的到了工厂方法模式。想要更深入的了解工厂模式,需要参考大量的案例,spring等开源框架中应用了大量的设计模式,工厂模式自然少不了,不管学习哪种设计模式,我们都可以去参考这些开源框架,它能够加深你对设计模式的理解。

源代码

文章不足之处,望大家多多指点,共同学习,共同进步

最后

打个小广告,欢迎扫码关注微信公众号:「平头哥的技术博文」,一起进步吧。
平头哥的技术博文

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#中增量类功能的方式之 继承与扩.. 下一篇Docker Compose部署项目到容器-基..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目