梁越

c++设计模式-简单工厂模式

0 人看过

简单工厂模式

简单工厂模式

适用情况

当产品类数目不多,而且逻辑简单的时候可以使用简单工厂

优缺点

有点:逻辑简单
缺点:违背了开闭原则,每次都要修改代码逻辑

与其他模式关系

简单工厂是工厂模式的原型,工厂模式是将简单工厂里的if-else提取成类

简易类图

代码实例

enum products{
    ConcreteProduct1=1;
    ConcreteProduct2=2;
}

class Product {
 public:
  virtual ~Product() {}
  virtual std::string Operation() const = 0;
};

class ConcreteProduct1 : public Product {
 public:
  std::string Operation() const override {
    return "{Result of the ConcreteProduct1}";
  }
};
class ConcreteProduct2 : public Product {
 public:
  std::string Operation() const override {
    return "{Result of the ConcreteProduct2}";
  }
};

class Creator {
 public:
  virtual ~Creator(){};
  virtual Product* FactoryMethod() const = 0;

  Product Create(products para) const {
      if(para=products.ConcreteProduct1) return new ConcreteProduct1();
      else if(para=products.ConcreteProduct2) return new ConcreteProduct2();
  }
};