/** * * @file FITKAbstractFactory.h * @brief 抽象工厂类 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 * */ #ifndef __FITKABSTRACTFACTORY_H__ #define __FITKABSTRACTFACTORY_H__ #include "FITKAbstractObject.hpp" #include namespace Core { /** * @brief 抽象工工厂声明 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ class FITKCoreAPI FITKAbstractFactory : public FITKAbstractObject { public: /** * @brief Construct a new FITKAbstractFactory object * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ explicit FITKAbstractFactory() = default; /** * @brief Destroy the FITKAbstractFactory object * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ virtual ~FITKAbstractFactory() = 0; /** * @brief 根据key创建对象 * @param[i] key 关键字 * @return FITKAbstractObject* * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ virtual FITKAbstractObject* create(const QString& key ); /** * @brief 根据key创建对象 * @param[i] key 关键字 * @return FITKAbstractObject* * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ virtual FITKAbstractObject* create(const int key) ; template /** * @brief 根据key创建对象,并转换类型 * @param[i] key 关键字 * @return FITKAbstractObject* * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ T* createT(const QString & key) { return dynamic_cast(create(key)); } template /** * @brief 根据key创建对象并转换类型 * @param[i] key 关键字 * @return FITKAbstractObject* * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ T* createT(const int key) { return dynamic_cast(create(key)); } }; } #endif