c++设计模式之工厂方法模式

来源:互联网 发布:航迹规划算法 编辑:程序博客网 时间:2024/06/04 18:36

工厂方法模式

1.简单工厂模式,支持扩展,也对修改开放了,违背了开放-封闭原则。
2.定义一个用于创建对象的接口,让子类决定实例化哪一个类,客户端需要决定实例化哪一个工厂来实现产品类。

#include<stdio.h>#include<string.h>class Oper{    double a;    double b;public:    void SetA(double _x) {a = _x;}    void SetB(double _y) {b = _y;}    double GetA(){return a;}    double GetB(){return b;}    virtual double GetResult(){return 0;}};class Add : public Oper{public:    double GetResult(){return (GetA()+GetB());}};class Sub : public Oper{public:    double GetResult(){return (GetA()-GetB());}};class IFac{protected:    Oper * oper;public:    ~IFac(){ if(oper)delete oper;}    virtual Oper * CreateFac()=0;};class CreateAddOper:public IFac{public:    CreateAddOper(){oper = new Add();}    Oper * CreateFac(){ return oper;}};class CreateSubOper:public IFac{public:    CreateSubOper(){oper = new Sub();}    Oper * CreateFac(){ return oper;}};int main(){    IFac * createAddOper = new CreateAddOper();    Oper * oper = createAddOper->CreateFac();    oper->SetA(100);    oper->SetB(10);    printf("----------%f------\r\n",oper->GetResult());    IFac * createSubOper = new CreateSubOper();    Oper * oper1 = createSubOper->CreateFac();    oper1->SetA(100);    oper1->SetB(10);    printf("----------%f------\r\n",oper1->GetResult());    return 0;}

UML:
这里写图片描述

0 0
原创粉丝点击