• 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;
    }

  • 相关阅读:
    网上订火车票,用chrome和firefox才是王道
    SYNOPSYS VCS常用命令使用详解
    archlinux failed retrieving file 'xxx'解决办法
    JQuery实现点击TreeView文本展开/折叠子节点
    解决VS2010下HTML5的无法智能提示的问题
    Win7 计算机右键“管理”失效
    virtualbox下安装archlinux
    Linux下修改(NTFS)磁盘(卷标)显示名称
    Win7下使用VMWare安装Archlinux
    1.XMLHttpRequest:
  • 原文地址:https://www.cnblogs.com/shencheng5721/p/3638643.html
Copyright © 2020-2023  润新知