设计模式第四站--简单工厂模式VS工厂方法模式

           中华文化博大精深,首先体现为中国的文字。很多时候一字之差就能谬之千里。今天真的是领会到了:简单工厂和工厂方法。从字面上看这两个短语并没有太大差别,可是在设计模式中,这两字之差带来的结果却不是那么微妙。

           既然说到这两个名称的差别,我们就重点比较一下它们。先来看一下工厂方法模式。

一、工厂方法模式

         工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。

二、形似的两种模式的比较      

 1.看两幅结构图


·简单工厂模式

     

·工厂方法模式

                           

            比较这两个结构图,我们会发现,每个结构图右侧的红色边框内有很大的区别,前者的简单工厂没有子类,只有一些逻辑判断代码;而后者却又重新分出四个具体的工厂。到这里,两种模式的区别之一就出来了。那么,工厂方法模式中的逻辑判断代码在哪里呢?答案是:客户端。因为,在前一种模式中,要想修改添加功能就必须在工厂类中进行修改,而后者是修改客户端。

  2.通过上面的比较我绘制了一个表格:

    

   从上面的表格中总结如下:

        (1)联系:

                  都有运算类、客户端,其中运算类都有相应的子类。

        (2)区别

                  最明显:工厂方法模式需要有一个工厂接口。

                   其次,工厂方法模式关于工厂类处是具体的工厂而不是一个简单的工厂类。

                   最后,添加功能时,前者改动的是工厂类(为工厂类添加相关功能的子类),后者改动的是客户端(为相应功能增加判断逻辑的代码)。

   用实例(计算器)说明就是:

           (1)都有运算类(包括加减乘除四个子类)、都需要一个客户端

           (2)工厂方法模式中的工厂类处,产生与运算类的子类相对应的四个具体的工厂:加法工厂、减法工厂、乘法工厂和除法工厂。

           (3)代码中要构建一个工厂接口,然后四个具体工厂去实现这个接口。


         这两者的比较就先到这里,该向下一站动身了!

           

   


评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值