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

来源:互联网 发布:apache tomcat教程 编辑:程序博客网 时间:2024/05/16 04:39

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

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

一、工厂方法模式

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

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

 1.看两幅结构图


·简单工厂模式

     

·工厂方法模式

                           

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

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

    

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

        (1)联系:

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

        (2)区别

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

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

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

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

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

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

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


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

           

   


0 0