• 抽象工厂模式


    简单工厂和工厂模式都是指的是一类相同的类。

    抽象工厂是针对的多个类的对象的组合。
    提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
    
    实现:分别为火车和飞机制造发动机和轮胎,火车和飞机用不同的发动机和轮胎。
    //抽象产品 发动机
    class Engine
    {
    public:
        virtual void makeEngine() = 0;
    };
    //具体产品 火车发动机
    class TrainEngine :public Engine
    {
    public:
        void makeEngine(){cout << "Train Engine" << endl;}
    };
    //具体产品 飞机发动机
    class PlaneEngine :public Engine
    {
    public:
        void makeEngine(){cout << "Plane Engine" << endl;}
    };
    //抽象产品 轮胎
    class Tyre
    {
    public:
        virtual void makeTyre() = 0;
    };
    //具体产品 火车轮胎
    class TrainTyre :public Tyre
    {
    public:
        void makeTyre(){cout << "Train Tyre" << endl;}
    };
    //具体产品 飞机轮胎
    class PlaneTyre :public Tyre
    {
    public:
        void makeTyre(){cout << "Plane Tyre" << endl;}
    };
    //抽象工厂 
    class Factory
    {
    public:
        virtual Engine* cerateEngine() = 0;
        virtual Tyre* createTyre() = 0;
    };
    //具体工厂 火车工厂
    class TrainFactory :public Factory
    {
        Engine* cerateEngine()
        {
            Engine* trainEngine = new TrainEngine();
            return trainEngine;
        }
        Tyre* createTyre()
        {
            Tyre* trainTyre = new TrainTyre();
            return trainTyre;
        }
    };
    //具体工厂 飞机工厂
    class PlaneFactory :public Factory
    {
        Engine* cerateEngine()
        {
            Engine* planeEngine = new PlaneEngine();
            return planeEngine;
        }
        Tyre* createTyre()
        {
            Tyre* planeTyre = new PlaneTyre();
            return planeTyre;
        }
    };
    int main()
    {
        Factory* factory = new TrainFactory();
    Engine
    * engine = factory->cerateEngine(); Tyre* tyre = factory->createTyre(); engine->makeEngine(); tyre->makeTyre(); factory = new PlaneFactory(); engine = factory->cerateEngine(); tyre = factory->createTyre(); engine->makeEngine(); tyre->makeTyre(); delete factory; delete engine; delete tyre; return 0; }
  • 相关阅读:
    Spring Cloud云架构
    Spring Cloud云架构
    Spring Cloud云架构
    Spring Cloud云架构
    Spring Cloud Consul
    Spring Cloud Eureka
    构建Spring Cloud微服务分布式云架构
    数据库三范式
    redis3.0.0 集群安装详细步骤
    sql优化的几种方法
  • 原文地址:https://www.cnblogs.com/osbreak/p/10111237.html
Copyright © 2020-2023  润新知