C++工厂方法模式(Factory Method Pattern)

本文深入探讨了C++中的工厂方法模式,这是一种创建型设计模式,它提供了一种创建对象的最佳方式。通过使用工厂方法,类可以将实例化过程推迟到子类中进行,使得代码更加灵活且易于扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#ifndef LOGGER_H
#define LOGGER_H

#include <iostream>
#include <string>
class Logger
{
    public:
        virtual void writeLog() = 0;
};

class DatabaseLogger : public Logger
{
    public:
        void writeLog() {
            std::cout << "DatabaseLogger" << std::endl; 
        }
};

class FileLogger : public Logger
{
    public:
        void writeLog() {
            std::cout << "FileLogger" << std::endl;
        }
};

class LoggerFactory
{
    public:
        virtual Logger* createLogger() = 0;
};

class DatabaseLoggerFactory : public LoggerFactory
{
    public:
        Logger* createLogger() {
            Logger* p = new DatabaseLogger;
            return p;
        }
};


class FileLoggerFactory : public LoggerFactory
{
    public:
        Logger* createLogger() {
            Logger* p = new FileLogger;
            return p;
        }

};


#endif
#include "Logger.h"

void test()
{
    LoggerFactory* pFileFactory = new FileLoggerFactory;
    Logger *pFile = pFileFactory->createLogger();
    pFile->writeLog();


    LoggerFactory* pDatabaseFactory = new DatabaseLoggerFactory;
    Logger *pDatabase = pDatabaseFactory->createLogger();
    pDatabase->writeLog();
    delete pFileFactory;
    delete pFile;
    delete pDatabaseFactory;
    delete pDatabase;
}
int main()
{
    test(); 
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值