PHP设计模式-建造者模式

  • 建造者模式

    该模式定义了处理其它对象的复杂构建的对象设计。

    简述:是不是很晦涩?没错。现在我们管建造者模式叫榨汁机模式,举个栗子:

    想象现在你有一台榨汁机,榨汁机有十个放入橙子的管道(忽略为什么会有十个管道的梗,我想要一杯大大大橙汁不行么,其实这里类比的意思是:你有需要在十个地方构建同一个对象来使用),当你想得到“一杯橙汁”这个对象时,常规做法,你每次需要:

    1. 从十个入口放入橙子;
    2. 从十个口把去皮的橙子放进去;
    3. 放入一些调味品(比如浓缩橙汁);
    4. 把杯子对准出口,用杯子盛橙汁;
    5. 按动开关,榨汁,得到一杯橙汁.
    

    如果使用榨汁机模式呢?

    1. 从十个入口放入橙子;
    2. 按动开关,榨汁,得到一杯橙汁.
    

    把常规做法下的第2,3,4步全部放入了榨汁机内部,你不用在每个入口处给橙子去皮(这是最重要的),就像你在构建一个对象时,不用每次都给每个对象设置某个属性一样。

    那么问题来了,使用榨汁机模式除了节省了一些构建对象(做出一杯橙汁)步骤之外,还有什么好处呢?
    现在假设你买的橙子都有很多坚硬的籽,如果直接把这些橙子用来榨汁喝会非常影响口感,所以我们需要把籽给去掉,常规做法下:

    1. 给十个橙子去皮;
    2. 给十个橙子去籽(即使是自动去籽也需要在十个入口处加自动去籽机);
    ......
    

    榨汁机模式下,在榨汁机内部增加一个去籽机,然后:

    1. 从十个口放入橙子;
    2. 按动开关,榨汁,得到一杯橙汁.
    

    看出问题了吗?构建对象时,在常规做法下,如果有什么修改,那么在每个构建的地方,都需要去修改。但是在建造者模式下,有了修改,只需要去修改这个构建对象一次即可。

    这就是我理解的建造者模式,如果你有更好的理解,欢迎在下面评论区留言!

Published by

发表评论

电子邮件地址不会被公开。 必填项已用*标注