用bind+function取代虚函数在好几年前就有人提出了,曾引起广泛的讨论,有支持的有反对的,可能赞成的人占大多数。这个话题挺有趣,本来是作为技术沙龙的开放性话题来讨论的,由于时间关系并没有讨论。今天就来具体探讨一下这个问题,我将做两个实验来验证一下这两种做法,具体是实现两个模式:策略模式和责任链模式。我将分别用经典的虚函数和bind+function来实现这两个模式。通过这两个实验来得出我的结论。

实验一:策略模式的实现

1.虚函数方式实现策略模式

class Calculater
{
public:
    virtual int calculate(int x, int y) = 0;
};

class Minus : public Calculater
{
public:
    int calculate(int x, int y) 
    {
        return x - y;
    }
};

class Plus : public Calculater
{
public:
    int calculate(int x, int y) 
    {
        return x + y;
    }
};

class CalcuClient
{
private:
    Calculater* m_caculater;
public:
    CalcuClient(Calculater* caculater) : m_caculater(caculater){}

    int calculate(int x, int y)
    {
        return m_caculater->calculate(x, y);
    }
};
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-28
  • 2021-12-01
  • 2022-12-23
猜你喜欢
  • 2021-07-20
  • 2021-06-22
  • 2021-12-07
  • 2022-12-23
相关资源
相似解决方案