当前位置: 首页 > news >正文

青白江建设网站中国八大设计院指的是哪些

青白江建设网站,中国八大设计院指的是哪些,开网站需要投资多少钱,wordpress标题重复引言: 编写一个与具体业务无关的示例代码。这个示例代码主要体现以下几个设计思想和模式: 接口模式(Interface Pattern):定义接口类,并让具体实现类去实现该接口的功能。 工厂模式(Factory Pa…

引言:

编写一个与具体业务无关的示例代码。这个示例代码主要体现以下几个设计思想和模式:

  1. 接口模式(Interface Pattern):定义接口类,并让具体实现类去实现该接口的功能。

  2. 工厂模式(Factory Pattern):根据不同条件动态生成不同的对象实例。

  3. 模板方法模式(Template Method Pattern):父类定义方法的结构,子类实现具体逻辑。

  4. 多线程处理:创建子类继承自QThread,并实现线程中的具体逻辑。

示例代码设计:

  • 核心逻辑:一个简单的日志系统,根据日志等级(如"info"、"warning"、"error")动态生成不同的日志处理线程,并执行相应的日志输出。

  • 工厂模式:工厂方法根据日志类型生成不同的处理线程。

  • 模板方法模式:每个日志处理线程继承自基类,基类定义通用处理逻辑,子类实现具体日志输出。

示例代码

1. 日志处理接口定义
cpp复制代码#ifndef LOGHELPERINTERFACE_H
#define LOGHELPERINTERFACE_H
​
#include <QString>
#include <QVector>
​
class LogHelperInterface
{
public:virtual ~LogHelperInterface() {}
​// 记录日志virtual void logMessage(const QString& message) = 0;
};
​
#endif // LOGHELPERINTERFACE_H
2. 基础日志引擎类
cpp复制代码#ifndef LOGENGINE_H
#define LOGENGINE_H
​
#include <QMap>
#include <QThread>
#include "loghelperinterface.h"
​
class LogEngine : public QObject
{Q_OBJECT
public:LogEngine(int logID, LogHelperInterface* helper);~LogEngine();
​void logMessage(const QString& message);
​static LogEngine* getEngine(const int& logID);
​
private:static QMap<int, LogEngine*> m_logMap;  // 用于存储不同日志引擎实例
​int m_logID;LogHelperInterface* m_pHelper;
};
​
#endif // LOGENGINE_H
3. 基础日志处理线程类
cpp复制代码#ifndef LOGTHREADBASE_H
#define LOGTHREADBASE_H
​
#include <QThread>
#include "loghelperinterface.h"
​
class LogThreadBase : public QThread
{Q_OBJECT
public:explicit LogThreadBase(LogHelperInterface* helper, QObject* parent = nullptr);
​static LogThreadBase* createLogHandler(const QString& logType, LogHelperInterface* helper);
​virtual void handleLog(const QString& message) = 0;
​
protected:LogHelperInterface* m_logHelper;
};
​
#endif // LOGTHREADBASE_H
4. 工厂模式实现
cpp复制代码#include "logthreadbase.h"
#include "infologthread.h"
#include "warninglogthread.h"
#include "errorlogthread.h"
​
LogThreadBase* LogThreadBase::createLogHandler(const QString& logType, LogHelperInterface* helper)
{if (logType == "info") {return new InfoLogThread(helper);} else if (logType == "warning") {return new WarningLogThread(helper);} else if (logType == "error") {return new ErrorLogThread(helper);}
​return nullptr;
}
5. 基础日志处理线程类实现
cpp复制代码#include "logthreadbase.h"
​
LogThreadBase::LogThreadBase(LogHelperInterface* helper, QObject* parent): QThread(parent), m_logHelper(helper)
{
}
6. InfoLogThread 具体实现
cpp复制代码#ifndef INFOLOGTHREAD_H
#define INFOLOGTHREAD_H
​
#include "logthreadbase.h"
​
class InfoLogThread : public LogThreadBase
{Q_OBJECT
public:explicit InfoLogThread(LogHelperInterface* helper, QObject* parent = nullptr);
​void handleLog(const QString& message) override;
};
​
#endif // INFOLOGTHREAD_H
cpp复制代码#include "infologthread.h"
#include <QDebug>
​
InfoLogThread::InfoLogThread(LogHelperInterface* helper, QObject* parent): LogThreadBase(helper, parent)
{
}
​
void InfoLogThread::handleLog(const QString& message)
{qDebug() << "INFO: " << message;m_logHelper->logMessage("INFO: " + message);
}
7. WarningLogThread 具体实现
cpp复制代码#ifndef WARNINGLOGTHREAD_H
#define WARNINGLOGTHREAD_H
​
#include "logthreadbase.h"
​
class WarningLogThread : public LogThreadBase
{Q_OBJECT
public:explicit WarningLogThread(LogHelperInterface* helper, QObject* parent = nullptr);
​void handleLog(const QString& message) override;
};
​
#endif // WARNINGLOGTHREAD_H
cpp复制代码#include "warninglogthread.h"
#include <QDebug>
​
WarningLogThread::WarningLogThread(LogHelperInterface* helper, QObject* parent): LogThreadBase(helper, parent)
{
}
​
void WarningLogThread::handleLog(const QString& message)
{qDebug() << "WARNING: " << message;m_logHelper->logMessage("WARNING: " + message);
}
8. ErrorLogThread 具体实现
cpp复制代码#ifndef ERRORLOGTHREAD_H
#define ERRORLOGTHREAD_H
​
#include "logthreadbase.h"
​
class ErrorLogThread : public LogThreadBase
{Q_OBJECT
public:explicit ErrorLogThread(LogHelperInterface* helper, QObject* parent = nullptr);
​void handleLog(const QString& message) override;
};
​
#endif // ERRORLOGTHREAD_H
cpp复制代码#include "errorlogthread.h"
#include <QDebug>
​
ErrorLogThread::ErrorLogThread(LogHelperInterface* helper, QObject* parent): LogThreadBase(helper, parent)
{
}
​
void ErrorLogThread::handleLog(const QString& message)
{qDebug() << "ERROR: " << message;m_logHelper->logMessage("ERROR: " + message);
}
9. 日志记录实现类
cpp复制代码#ifndef SIMPLELOGHELPER_H
#define SIMPLELOGHELPER_H
​
#include "loghelperinterface.h"
#include <QDebug>
​
class SimpleLogHelper : public LogHelperInterface
{
public:void logMessage(const QString& message) override{// 这里我们简单将日志输出到控制台qDebug() << "Logging message: " << message;}
};
​
#endif // SIMPLELOGHELPER_H
10. 主函数示例
cpp复制代码#include <QCoreApplication>
#include "logengine.h"
#include "simpleloghelper.h"
#include "logthreadbase.h"
​
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);
​SimpleLogHelper logHelper;
​// 创建日志引擎LogEngine* logEngine = new LogEngine(1, &logHelper);
​// 生成不同的日志处理线程LogThreadBase* infoLogThread = LogThreadBase::createLogHandler("info", &logHelper);LogThreadBase* warningLogThread = LogThreadBase::createLogHandler("warning", &logHelper);LogThreadBase* errorLogThread = LogThreadBase::createLogHandler("error", &logHelper);
​// 处理日志infoLogThread->handleLog("This is an info message");warningLogThread->handleLog("This is a warning message");errorLogThread->handleLog("This is an error message");
​return a.exec();
}

总结

  1. 接口模式LogHelperInterface 是接口,SimpleLogHelper 实现了这个接口,用于处理日志输出。

  2. 工厂模式LogThreadBase::createLogHandler 工厂方法根据传入的日志类型动态生成不同的日志处理线程(如InfoLogThreadWarningLogThreadErrorLogThread)。

  3. 模板方法模式LogThreadBase 作为抽象基类,定义了日志处理的通用接口,具体实现由子类完成。

通过这个示例,展示了如何使用这些设计模式来构建一个灵活、可扩展的系统。

http://www.yayakq.cn/news/240537/

相关文章:

  • vs2010做网站登陆界面境外网站在国内做镜像
  • 网站添加备案号网站如何强制修改主页 源码
  • 大朗做网站的合肥网站建设佳蓝网络
  • 信息网站怎么做莲湖微网站建设
  • 网站qq 微信分享怎么做的lnmp和wordpress
  • wordpress自动网站地址深圳企业公司有哪些
  • 军事网报名入口专业排名优化工具
  • 开发一个购物app需要多少钱长沙网站seo技术
  • dedecms 网站栏目管理如何做美食的视频网站
  • 网站开发的技术手段有哪些佳木斯市郊区建设局网站
  • 茶叶网站建设哪家seo技术经理
  • 个人做网站手机获取验证码高端网站制作要多少钱
  • 网站优化是外包还是自己做竞价开户公司
  • asp网站开发基础域名关联网站
  • 移动网站开发入门企业名录软件
  • 做网站用apache还是nginx怎么建设只要注册就赚钱的网站
  • 绍兴市高速公路建设指挥部网站wordpress类别图标
  • 上传网站程序如何注册免费网站
  • 微信公众号的微网站怎么做的网页设计实训报告总结200字
  • 做养生网站需要证件吗叙述网站的设计制作流程
  • 地方门户网站赚钱软件商城有哪些
  • 大连网站建设吗西安网站建设ruiqinet
  • 四川网站建设 四川冠辰科技wordpress目录权限设置
  • 简述企业网站的建设过程游戏网站上图片动态怎么做的
  • c#网站购物车怎么做电商网站开发简历
  • 网站建设的本质做外贸有哪些免费的网站有哪些
  • 电商类网站设计模板班级网站建设流程步骤
  • 河北省建设厅网站重新安装大庆做网站的公司
  • 手机支付网站开发新浪sae wordpress略缩图设置
  • 中国工程建设招聘信息网站wordpress 4.6.1 下载