(一)简单工厂模式

#include <iostream>
using namespace std;

//算法基类 
class operation
{
      public:
             operation() {}
             void set_data( double a, double b )
             {
                  A=a;
                  B=b;
             }
             virtual ~operation() {}
             virtual double result() {}
      protected:
                double A,B;
};

//具体的算法类 

class add : public operation
{
      public:
             double result()
             {
                    return A+B;
             }
};

class sub : public operation
{
      public:
             double result()
             {
                    return A-B;
             }
};

//工厂类 
class factory
{
      public:
             operation *create_operation( char s )
             {
                       operation *p = NULL;
                       switch(s)
                       {
                               case '+' :
                                    p = new add;
                                    break;
                               case '-' :
                                    p = new sub;
                                    break;
                       }
                       return p;
             }
};

//main函数,也可以看成客户端 
int main()
{
    factory *f = new factory;
    operation *p = f->create_operation( '+' );
    p->set_data( 98, 25.76 );
    cout << p->result() << endl;
    delete f;
    f = NULL;
    delete p;
    p = NULL;
    
    return 0;
}

这个星期来看了大话设计模式,有一点感觉了,把自己学到的写下来,还是用书上的例子吧!



如上,所谓的简单工厂模式主要用于创建对象。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。当我们想要添加新的功能的时候添加新类就可以了,不过坏处就是客户端必须要知道基类和工厂类,耦合性差,所以后面会有提到相关的改良方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值