3

java和设计模式(工厂方法)

 2 years ago
source link: https://blog.csdn.net/feixiaoxing/article/details/125816841
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

java和设计模式(工厂方法)

嵌入式-老费 已于 2022-07-16 11:26:07 修改 16

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        如果说简单工厂中只会涉及到一个factory,那么工厂方法会显得稍微复杂一点。假设有一个产品涉及到两个配件,分别是配件A和配件B。配件A和配件B又有两种工艺。那么,这个时候,在生产这个产品的过程中,就有可能出现多种组合。比如说,A1工艺和B1工艺的组合,A2工艺和B2工艺的组合等等,部件越多,组合的方式也就越多。

1、模式讲解

        为了更进一步地说明问题,我们不妨画图来了解一下,

b0dd17aff46e40e8916a898d401c5961.png

         图中说的产品就类似于factory,而不同工艺的组合就类似于factory1和factory2。产品中的部件,就类似于productA和productB。以productA为例,有工艺1的生产方法productA1,有工艺2的生产方法productA2。productB也是同样这个道理。

        那么对于使用者来说,他其实并不关心工艺的部分,也不关心具体产品是怎么生产出来的,它只关心是factory1生产的、还是factory2生产的,对外的接口都是factory。

        从上面的图形中,可以比较容易地编写出对应地代码,大家自己也可以尝试一下,

        简单运行下,就可以获得对应的执行结果,

2、场景应用

        对于大部分产品,消费者只关心品牌,不关心过程。这个时候工厂方法就可以发挥作用了。如果一个产品依赖的部件比较少,那么工厂方法又会退步到简单工厂的模式,这个依赖于具体的产品实现方式。

        另外一个比较合适的例子就是手机。比如手机有cpu、dram、flash、屏幕、5g模块等等。那么每一个模块都可以找出不同的供应商。那么cpu这些部件就是product,手机本身就是factory,而factory1、factory2...这些就是不同组装手机方案。通过这种方法来记忆工厂方法模式,或许更好一些。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK