zoukankan      html  css  js  c++  java
  • 1、简单工厂模式

         客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

         下面用具体的实例来讲解简单工厂模式,假设有一个汽车销售工厂,这个工厂销售各种汽车,如宝马、福特等,我们先建立汽车产品类

    // 汽车抽象类。
    class Car
    {
    public:
        
    virtual void Sale() = 0;
    }; 

    // 福特汽车子类。
    class FordCar: public Car
    {
        
    void Sale()
        {
            printf(
    "Sale Ford car!\n");
        }
    }; 

    // 宝马汽车子类。
    class BmwCar: public Car
    {
        
    void Sale()
        {
            printf(
    "Sale BMW car!\n");
        }
    };

    然后建立汽车类工厂CarFactory

    // 汽车工厂类。
    class CarFactory
    {
    public:
        
    static Car *SaleCar(const char *prmString);
    }; 

    Car 
    * CarFactory::SaleCar( const char *prmString )
    {
        
    if (stricmp(prmString, "bmw"== 0)
        {
            
    return new FordCar(); 
        }
        
    else if (stricmp(prmString, "ford"== 0)
        {
            
    return new BmwCar();
        }
        
    else
        {
            
    return NULL;
        }        
    }

        这样我们就可以通过给工厂打个电话:“我要销售宝马汽车”,工厂接到电话后就会把宝马给你开过来了。

    void main()
    {
        Car 
    *car1 = CarFactory::SaleCar("bmw");
        car1
    ->Sale();
        
        Car 
    *car2 = CarFactory::SaleCar("ford");
        car2
    ->Sale();
        
        delete car1;
        delete car2;
    }
  • 相关阅读:
    C++ MessageBox()
    magento 获取attribute的所有option
    在mangento后台调用wysiwyg编辑器
    正则式匹配数字字符串中的数字
    use magento default datepicker plugin in your project
    Colorbox cannot load the image added by js
    deal with 'non-admin area' warn
    How to use pagination in Magento
    Magento
    Magento布局layout.xml文件详解
  • 原文地址:https://www.cnblogs.com/kobe/p/1410961.html
Copyright © 2011-2022 走看看