• 简单工厂模式


      简单工厂模式,又称为静态工厂方法模式,属于创建型模式,但不是 GOF 的23种模式之一,它由一个工厂对象决定创建出哪一种产品类的实例。其实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例,然后统一返回该实例的基类指针,以供程序其它地方统一调用。

     1 #include <iostream>
     2 
     3 class Base
     4 {
     5     public:
     6         virtual void show() = 0;
     7 };
     8 
     9 class Children1 : public Base
    10 {
    11     public:
    12         void show()
    13         {
    14             std::cout<<"Children1"<<std::endl;
    15         }
    16 };
    17 
    18 class Children2 : public Base
    19 {
    20     public:
    21         void show()
    22         {
    23             std::cout<<"Children2"<<std::endl;
    24         }
    25 };
    26 
    27 typedef enum _Enum
    28 {
    29     ONE = 1,
    30     TWO = 2,
    31 } MyEnum;
    32 
    33 #define CASE(num,classname) case num:obj=new classname();break;
    34 class Factory
    35 {
    36     public:
    37         static Base* createObj(MyEnum num)
    38         {
    39             Base* obj = nullptr;
    40             switch(num)
    41             {
    42                 CASE(ONE,Children1)
    43                 CASE(TWO,Children2)
    44 
    45                 default:
    46                     break;
    47             }
    48             return obj;
    49         }
    50 };
    51 
    52 int main()
    53 {
    54     Factory::createObj(ONE)->show();
    55     Factory::createObj(TWO)->show();
    56 }

    缺点:没有相应的delete操作,需要在使用时,将创建出来的对象赋给一个基类指针,使用完后delete该指针。上面的代码就存在内存泄漏问题。

    Makeflie:

     1 CXX = g++
     2 CXXFLAGS = -g -gdwarf-2 -Wall -O0 -std=c++0x 
     3 
     4 VPATH =.
     5 SRC_FILES = $(foreach n, $(VPATH),$(wildcard $(n)/*.cpp))
     6 EXE_FILES = $(basename $(notdir $(SRC_FILES)))
     7 
     8 .PHONY:target
     9 target : $(EXE_FILES)
    10 
    11 % : %.cpp
    12     $(CXX) $(CXXFLAGS) -o $@ $<
    13 
    14 .PHONY:clean
    15 clean:
    16     -rm -rf $(EXE_FILES)
  • 相关阅读:
    使用DBCP时发生AbstractMethodError异常
    Android NDK 环境搭建 + 测试例程
    一个关于含有显式实参的虚函数调用问题解释
    cookie和session
    hello
    python 多线程多进程
    python 网络编程
    docker 制作镜像
    docker 数据卷存储
    docker 简单原理及相关命令(镜像拉取 删除 执行容器 进入容器)
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/3016798.html
Copyright © 2020-2023  润新知