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;
    }
  • 相关阅读:
    v-for给img的src动态赋值问题
    关于vue+axios上传文件的踩坑分析
    关于nth-of-type和nth-child的关系
    关于fetch
    关于移动端适配
    golang变量作用域问题-避免使用全局变量
    grpc-gateway:grpc转换为http协议对外提供服务
    google的grpc在golang中的使用
    golang中的rpc包用法
    homebrew常用命令
  • 原文地址:https://www.cnblogs.com/kobe/p/1410961.html
Copyright © 2011-2022 走看看