zoukankan      html  css  js  c++  java
  • C++设计模式之工厂模式

    //产品父类声明
    #pragma
    once #include "iostream" using namespace std; class Product { public: virtual void PrintfName(); Product(void); ~Product(void); };
    //产品A类
    #pragma
    once #include "product.h" class ProductA : public Product { public: virtual void PrintfName(); ProductA(void); ~ProductA(void); }; #include "ProductA.h" ProductA::ProductA(void) { } ProductA::~ProductA(void) { } void ProductA::PrintfName() { cout<<"This is ProductA"<<endl; }
    //产品B类
    #pragma
    once #include "Product.h" class ProductB : public Product { public: virtual void PrintfName(); ProductB(void); ~ProductB(void); }; #include "ProductB.h" ProductB::ProductB(void) { } ProductB::~ProductB(void) { } void ProductB::PrintfName() { cout<<"This is ProductB"<<endl; }
    //创建父类声明
    #pragma
    once #include "Product.h" class Creator { public: virtual Product* GetProduct()=0; Creator(void); ~Creator(void); };
    ////产品A的创建
    #pragma
    once #include "ProductA.h" #include "creator.h" class CreatorA: public Creator { public: virtual ProductA* GetProduct(); CreatorA(void); ~CreatorA(void); }; #include "CreatorA.h" CreatorA::CreatorA(void) { } ProductA* CreatorA::GetProduct() { return (new ProductA()); } CreatorA::~CreatorA(void) { }
    //产品B的创建
    #pragma
    once #include "creator.h" #include "ProductB.h" class CreatorB : public Creator { public: virtual ProductB* GetProduct(); CreatorB(void); ~CreatorB(void); }; #include "CreatorB.h" CreatorB::CreatorB(void) { } CreatorB::~CreatorB(void) { } ProductB *CreatorB::GetProduct() { return (new ProductB()); }
    // Factory.cpp : 定义控制台应用程序的入口点。
    //工厂模式调用
    
    #include "stdafx.h"
    #include "Creator.h"
    #include "CreatorA.h"
    #include "CreatorB.h"
    #include "ProductA.h"
    #include "ProductB.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
        Creator* ca=new CreatorA();
        Creator* cb=new CreatorB();
        Product* pa=ca->GetProduct();
        Product* pb=cb->GetProduct();
        pa->PrintfName();
        pb->PrintfName();
        getchar();
        delete ca;
        delete cb;
        delete pa;
        delete pb;
        return 0;
    }

  • 相关阅读:
    SpringBoot之采用AOP统一打印日志信息
    SpringBoot之SpringBoot整合log4j
    SpringBoot之SpringBoot整合logback
    SpringBoot之SpringBoot整合多环境不同配置文件
    SpringBoot之SpringBoot整合devtools热部署
    [bug] Flask:jinja2.exceptions.UndefinedError: 'None' has no attribute 'id'
    [bug] Python:“TabError: inconsistent use of tabs and spaces in indentation”
    [bug] MySQL 无法删除表
    [bug] Flask css 不更新
    [bug] flink on yarn 启动失败
  • 原文地址:https://www.cnblogs.com/shencheng5721/p/3638643.html
Copyright © 2011-2022 走看看