C++ 中的单一职责原则(Single Responsibility Principle,SRP)是SOLID设计原则中的一部分,它指出一个类应该只有一个引起变化的原因。换句话说,一个类应该只负责一项工作。
通过一个文件操作类 说明
#include <iostream>
#include <fstream>
#include <string>
// 文件读取类
class FileReader 
{
public:
    std::string read(const std::string& filename) 
    {
        std::string content;
        std::ifstream file(filename);
        if (file.is_open()) 
        {
            std::string line;
            while (std::getline(file, line)) 
            {
                content += line + "\n";
            }
            file.close();
        }
        return content;
    }
};
// 文件写入类
class FileWriter 
{
public:
    void write(const std::string& filename, const std::string& content)
     {
        std::ofstream file(filename);
        if (file.is_open()) 
        {
            file << content;
            file.close();
        }
    }
};
int main() 
{
    FileReader reader;
    std::string data = reader.read("test.txt");
    std::cout << "read data: " << data << std::endl;
    FileWriter writer;
    writer.write("output.txt", "this is an example of writing to a file.");
    return 0;
}
我们将文件的读取和写入操作分别封装在 FileReader 和 FileWriter 两个类中。这样,每个类都只有一个明确定义的职责,分别负责文件的读取和写入操作。
设计遵循单一职责原则:每个类只负责一项工作,当需求发生变化时,只需要修改对应的类,而无需影响其他类。这样的设计可以提高代码的可维护性和可扩展性。
当需求发生变化时,根据单一职责原则的设计,我们可以针对不同的需求独立地扩展或修改相应的类,而不会影响其他部分的代码。
场景一:添加对文件压缩的支持
假设现在需要对读取和写入的文件进行压缩处理。根据单一职责原则,我们可以创建一个新的类 FileCompressor,负责文件的压缩和解压操作。然后,在需要的地方调用 FileCompressor 的方法进行压缩和解压操作,这样就实现了功能的扩展,并且不会影响到原有的文件读取和写入类。
class FileCompressor 
{
public:
    std::string compress(const std::string& filename) 
    {
        // 压缩文件的具体实现
    }
    void decompress(const std::string& filename) 
    {
        // 解压文件的具体实现
    }
};
// 在需要的地方使用 FileCompressor 进行压缩和解压操作
场景二:添加日志记录功能
另一个需求可能是添加日志记录功能,以便跟踪文件读取和写入的操作。根据单一职责原则,我们可以创建一个新的类 FileLogger,负责记录文件操作相关的日志信息。然后,在需要的地方调用 FileLogger 的方法进行日志记录,这样就实现了功能的扩展,同样也不会影响到原有的文件读取和写入类。
class FileLogger 
{
public:
    void log(const int level, const std::string& message) 
    {
        // 记录日志的具体实现
    }
};
// 在需要的地方使用 FileLogger 进行日志记录
通过以上的两个场景,我们可以看到,根据单一职责原则的设计,当需求发生变化时,我们可以独立地扩展或修改相应的类,而不会对其他部分的代码造成影响。这样的设计使得代码更加灵活和易于维护。
 
                   
                   
                   
                   
                             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   1438
					1438
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            