c++简单工厂模式

#include<常用>

#include"消息.h"
用 名字空间 标;

类 啊{:()=;用 创建方法=函数<独针<消息基>()>;
    静 极 注册(整 标识,创建方法 创建者){&映射=取映射();动 它=映射.查找(标识);(==映射.()){
            映射[标识]=创建者;
            输出<<标识<<"[!串000]";中 真;
        }
        中 假;
    }

    静 独针<消息基>产生(整 标识){&映射=取映射();动 它=映射.查找(标识);(!=映射.())中 它->第二();中 空针;
    }
    静 映<,创建方法>&取映射(){
        静 映<,创建方法>映射;中 映射;
    }
};<型名 T>构 自动工厂{
    静 常 整 标识;静 常 极 呀;
    静 极 注册(){
        中 啊::注册(T::标识,[]{中 造独<T>();});
    }//自动注册
};<类 T>常 极 自动工厂<T>::=自动工厂<T>::注册();
//这里注册函数.先注册一个,要先注册<型名 T>常 整 自动工厂<T>::标识=强转<>(&自动工厂<T>::);
//通过下面的继承就实现了.这里是标识,求值

构 消息3:公 消息基,自动工厂<消息3>{foo(){输出<<"消息3"<<行尾;}
};
构 消息4:公 消息基,自动工厂<消息4>{foo(){输出<<"消息4"<<行尾;}
};

整 主(){
    动 消息5=::产生(消息3::标识);(消息5){消息5->foo();}
    动 消息7=::产生(消息4::标识);(消息7){消息7->foo();}
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值