zoukankan      html  css  js  c++  java
  • 工厂模式

    之前总结了简单工厂模式,然后我们发现,如果需要添加一个新的产品的话,就需要对工厂就行修改,添加相应的判断语句,从而来创建需要的类型的对象。这样就提高了耦合性,维护起来也稍麻烦些。那么本文就总结下能够解决这个问题的另一种设计模式——工厂模式。

    工厂模式:factory pattern。GOF定义的二十三中设计模式之一,属于创建型模式。工厂模式和简单工厂模式最大的区别在于工厂模式添加了公共的抽象工厂以及抽象产品类。同时相应的子类工厂只能够创建相应的子类产品。一一对应。

    优点:当需要扩展的时候只需要添加新的产品类和工厂类,并集成抽象产品和抽象工厂类。不需要对抽象工厂类进行修改,提高了代码的可维护性和可扩展性。更好的体现了开放-关闭原则。

    缺点:

    当产品过多时,类将会成倍的增加。增加了系统的复制度。

    下面给出一个实例

    image

    代码如下:

    class goods

    {

    String name;

    public void show()

    {

    name="goods";

    System.out.println(name);

    }

    }

    class goodsA extends goods

    {

    String name;

    public void show()

    {

    name="goodsA";

    System.out.println(name);

    }

    }

    class goodsB extends goods

    {

    String name;

    public void show()

    {

    name="goodsB";

    System.out.println(name);

    }

    }

    class factory

    {

    public goods create()

    {

    return new goods();

    }

    }

    class factoryA extends factory

    {

    public goods create()

    {

    return new goodsA();

    }

    }

    class factoryB extends factory

    {

    public goods create()

    {

    return new goodsB();

    }

    }

    public class test

    {

    public static void main(String args[])

    {

    factory f;

    f=new factoryA();

    goods g;

    g=f.create();

    g.show();

    f=new factoryB();

    g=f.create();

    g.show();

    }

    }

    结果如下:

    image

    联系我:renhanlinbsl@163.com

    2016-8-2

    20:28

  • 相关阅读:
    洛谷 P2480 [SDOI2010]古代猪文
    [六省联考2017]组合数问题
    数据结构--左偏树(可并堆)
    图论--tarjan求割点
    图论--tarjan缩点
    图论--DFS-SPFA求负环
    图论--tarjan求lca
    洛谷 P2163 [SHOI2007]Tree 园丁的烦恼
    数据结构--主席树(不带修改)
    洛谷 P1712 区间
  • 原文地址:https://www.cnblogs.com/ives/p/fafctory_pattern.html
Copyright © 2011-2022 走看看