jiangweifeng1997 2015-06-06 02:07 采纳率: 100%
浏览 1518
已结题

求教简单C++ OOP题目 关于Log库的简易编写

Log是用来对复杂程序进行调试的常用手段,用来实现log的库也是我们非常常用的程序
库之一。请你设计一个简化的log程序库,做到如下几点:
a) 能够支持三种不同的log目的地(控制台、文件、数据库)及这三种目的地的自由
组合,目的地可以动态变化,未来可能需要加入更多种类的目的地(比如限制长度
的文件);
b) 能够支持三种不同的log格式(简单不带任何附加信息,附带短格式表示的当前时
间,附带长格式表示的当前时间),格式可以动态变化(即可以在log 对象产生之
后动态修改其使用的log格式),以后可能需要加入更多种类的格式;
c) 支持对string类型进行log操作。
请针对这几点需求对这个程序库进行设计,不要求实际实现功能,只要在相应功能处
用输出语句输出标记即可。

  • 写回答

1条回答

  • threenewbee 2015-06-06 03:49
    关注
     abstract class IWriterSerivce
    {
        public: void Write(string context) = 0;
    }
    class FileWriter : public IWriterSerivce
    {
        public: void Write(string context) { / * 将context写入文件 */ }
    };
    class DBWriter : public IWriterSerivce
    {
        public: void Write(string context) { / * 将context写入数据库 */ }
    };
    class ConsoleWriter : public IWriterSerivce
    {
        public: void Write(string context) { / * 将context输出控制台 */ }
    };
    class LogBase
    {
        protected: IWriterSerivce ** services;
            protected: int servicecount = 0;
            protected: virtual string formatLog(string s) { return s; }
            public: void Write(string s)
            {
                string fs = formatLog(s);
                for (int i = 0; i < servicecount; i++)
                    {
                         services[i]->Write(fs);
                    }
            }
    };
    class SimpleLog : public LogBase
    {
        protected virtual string formatLog(string s) { return 格式化(s); }
    };
    class ShortDateTimeLog : public LogBase
    {
        protected virtual string formatLog(string s) { return 格式化(s); }
    };
    class LongDateTimeLog : public LogBase
    {
        protected virtual string formatLog(string s) { return 格式化(s); }
    };
    使用:
    比如说我要用输出控制台、文件,短日期:
    class MyLog : public ShortDateTimeLog
    {
        public MyLog()
            {
        services = new IWriteService[2];
            service[0] = new FileWriter();
            service[1] = new ConsoleWriter();
            servicecount = 2;
            }
    };
    
    MyLog log;
    log.Write(yourstring);
    
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料