美文网首页
工厂方法

工厂方法

作者: 3ca30679d9e7 | 来源:发表于2020-10-20 10:13 被阅读0次

工厂方法

针对上面的简单工厂,在增加新的支付方式时需要修改原有的代码,可能与开闭原则相违背,工厂方法遵循了开闭原则,直接贴图

1.还是原来的代码,alipay 和 wxpay 都实现了Pay接口

2.工厂方法我此处改了一下类名,但是内部的方法逻辑还是跟简单工厂一样的实现

3.工厂方法我此时增加了一个定义了一个创建Factory的接口,上面的 ThirdPartyFactory 已经实现了这个接口

4.此时我们需要直接对接银行接口,不再是第三方支付接口,那我不需要修改原有的ThirdParty相关代码。只需要去创建银行具体要对接的银行类,去实现Pay接口。比如当前需要对接工商银行和农业银行,那类似微信和支付宝一样,先实现Pay类。

5.然后再创建一个BankFactory 去实现 Factory

6.依次类推,我们可以创建很多具体的Factory的实现类,如果有新的需要对接的,我们只需要创建一组类似简单工厂的实现即可。此时遵循了开闭原则,不会修改原有的代码。此处举的例子不是很恰当,只需要理解工厂方法的思想即可。

7.此处再说一个可以省略Factory 和 Factory实现类的方式,只是我个人开发中会使用的

看上面的类的命名结尾都是Pay结尾,那此时可以使用反射,直接取到对应的类,不用再去创建每个工厂方法,再使用简单工厂逻辑去判断具体返回的类。

利用BeanFactory getBean 通过类名可反射获取到类

此时可以直接省略创建Factory 、BankFactory 和ThirdPartyFactory简化了很多代码,只需要调用pay接口,只需要传参如wx,通过拼接wxPay类名反射获取到 WxPay 对象,如果是支付宝只需要传参 ali,或icbc、abc。不需要再去定义多个工厂实现类。

此处两行代码可以替代BankFactory 和ThirdPartyFactory里面的逻辑代码

相关文章

  • 工厂模式

    简单工厂 —— 工厂方法 —— 抽象工厂 简单工厂: 静态(工厂方法) : 创建一个对象。工厂方法: 动态: 基于...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • Spring-4静态工厂方法和动态工程方法配置bean

    静态工厂方法 动态工厂方法

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 工厂方法模式及策略模式

    本文主要内容 工厂方法介绍 工厂方法 抽象工厂介绍 抽象工厂 策略模式 本文继续介绍相关设计模式,本期介绍工厂方法...

  • 工厂方法(Factory Method)

    工厂方法 一般情况下,工厂模式分为:简单工厂、工厂方法和抽象工厂。 简单工厂模式(Simple Factory) ...

  • python设计模式 - 工厂模式之工厂方法

    python 环境 工厂方法模式简介 工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式...

  • python设计模式-1工厂设计模式-3抽象工厂

    抽象工厂简介 抽象工厂设计模式是工厂方法的泛化。抽象工厂是(逻辑上的)一组工厂方法, 每个工厂方法负责产生不同种类...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

网友评论

      本文标题:工厂方法

      本文链接:https://www.haomeiwen.com/subject/roxlmktx.html