美文网首页
简单工厂,工厂方法,抽象工厂 概念 对比

简单工厂,工厂方法,抽象工厂 概念 对比

作者: 隔壁班小明 | 来源:发表于2018-04-23 16:16 被阅读21次

    作为一个瞎写的楼主今天说一说我对标题这哥仨的理解。
    单独说一个的很多了,但是总是越看越混,最后懵逼,这里我希望说一下我对他们的一些理解,不具体说代码。
    简单工厂:简单的说写了一个创建方法创建了一类东西,具体创建的是哪个,这个方法上会有一个参数,根据这个参数再判断具体生成那个。

    那我们最熟悉的页面说吧,你有一个tableView,但是他们的头试图不一样,有三种头试图对应三种情况。这里我们就可以使用简单工厂了。
    简单工厂:
    第一步:首先抽离一下三种头试图共有的东西,比如都是通过一个方法来设置数据的。这样就生成了一个协议,当然你写成一个类也可以。
    第二步:实现(继承)上面的协议(类),具体写一下三个头试图的具体类。
    第三步:写一个方法,方法返回值是基础的协议(父类),来一参数用来在方法中判断创建三种头试图的哪一种就可以了。ps:一般这个参数写成一个枚举类型。

    还是用上面头试图的例子。这次换成工厂方法来实现
    工厂方法:
    第一步:同上。
    第二步:同上。
    ps:上面两步总结一下是对工厂产品的实现,下面是对工厂的操作。刚刚简单工厂的那个方法里有一个判断,这里就是把这个判断去掉,
    第三步:创建一个工厂的基本协议(类),来一个方法返回值是基础的协议(父类),但是这里没有那个参数了。
    第四步:实现(继承)工厂的协议(类),具体把每一种头试图对应一个工厂实例。每一种头试图的创建由对应的工厂来实现。

    对比一下啊。工厂方法相当于把简单工厂的创建方法拆分成到三个子类去写了。当然具体的好处不是表面写的这样简单。

    要说抽象工厂我得把例子改一下,还是那个tableView,现在对应三种情况时,他们的头试图和尾试图要一起变化。就是从头试图的改变,变成了一组头尾试图的改变。

    步骤这里我就不写了,简单的说就是把一种工厂产品变成了两种工厂产品。流程上和工厂方法是一样一样的。

    文章最后还是那句话,我一种想用自己的理解来简便的说清楚一些事情,所以有些地方可能说的就不对,希望大神指出

    相关文章

      网友评论

          本文标题:简单工厂,工厂方法,抽象工厂 概念 对比

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