zoukankan      html  css  js  c++  java
  • [Design Pattern] 简单工厂模式

    简单工厂模式

    在工厂类中通过方法(传入参数)来创建对象。

    优点:

    1. 使客户端与具体实现解耦

    2. 对于创建某些创造过程复杂的对象,直接将创建交给工厂

    缺点:

    1. 新增类需要修改工厂类中代码,不符合开闭原则

    2. 工厂类指责过重。需要多个条件判断来创造对象

    所以该模式不属于23类设计模式。

    参考代码:(以水果为例)

    class Fruit
    {
    public:
        virtual void showName() = 0;
    };

    class Apple : public Fruit { public: virtual void showName() { cout << "I am apple." << endl; } }; class Banana : public Fruit { public: virtual void showName() { cout << "I am banana." << endl; } }; class Pear : public Fruit { public: virtual void showName() { cout << "I am pear." << endl; } }; class FruitFactory { public: static Fruit* createFruit(const string& name) { if (name == "apple") return new Apple(); else if (name == "banana") return new Banana(); else if (name == "pear") return new Pear(); else return NULL; } }; int main() { FruitFactory* factory = new FruitFactory(); Fruit* apple = factory->createFruit("apple"); apple->showName(); delete factory; delete apple; return 0; }

     适用场景

    1. 工厂类负责创建对象较少。由于创建对象较少,不会造成工厂的业务逻辑过于复杂

    2. 客户端只需要构造的参数,不需要关心构造的过程

  • 相关阅读:
    [BZOJ] 3191 [JLOI2013]卡牌游戏
    [LUOGU] P1466 集合 Subset Sums
    [LUOGU] P1113 杂物
    [BZOJ] 1003 [ZJOI2006]物流运输
    poj 2479 最大连续子段和
    C#学习第九弹之委托
    C#学习第八弹之线程基础理解
    C#学习第七弹之WPF
    hdu 2030 汉字的编码方式
    hdu 1559 暴力
  • 原文地址:https://www.cnblogs.com/immjc/p/9120579.html
Copyright © 2011-2022 走看看