亲宝软件园·资讯

展开

策略模式和工厂模式的区别

大CC 人气:0

工厂模式和策略模式看着很像,经常让人混淆不清; 
它们的区别在哪里,需要细细体味;

相似点

在模式结构上,两者很相似;

差异

举例说明

代码实现

我们用代码来实现上面的不同点:

工厂模式

class Store
{
    void orderPizza(){
    Pizza *p = createPizza()
    //有了pizza对象后,接下来的工序都是一样的,对用户而言,是透明的;
    p->prepare(); //准备材料,放调料
    p->bak(); //烘烤
    p->cut(); //切块
    }
    virtual createPizza() = 0; 
}

class AStore : public Store
{
    virtual Pizza * createPizza()
    {
        Pizza * p = new APizza();
        return p;
    }
}

策略模式

image

class Store
{
    void orderPizza(){
    Pizza *p = MyPizza();
    //工序都有,但是具体如何实现,由用户来确定实现;
    p->prepare(); 
    p->bak(); 
    p->cut(); 
}

class MyPizza : public Pizza
{
    virtual void prepare(){
        //我的pizza我做主,我可以多放点肉,再多来点酱
    }
    virtual void bak(){
        //我想烤的时间长点,这样会更脆
    }
    virtual  void cut(){
        //切块,我想切成20块,像吃西瓜片那样吃披萨
    }
}

加载全部内容

相关教程
猜你喜欢
用户评论