ToB企服应用市场:ToB评测及商务社交产业平台

标题: 设计模式——代理模式 [打印本页]

作者: 涛声依旧在    时间: 2024-10-31 13:57
标题: 设计模式——代理模式
一、界说与概念


二、布局和组成部分

抽象主题(Subject)接口


  1. class FileReaderSubject {
  2. public:
  3.     virtual std::string readFile(const std::string& fileName) = 0;
  4.     virtual ~FileReaderSubject() {}
  5. };
复制代码
真实主题(Real Subject)


  1. class RealFileReader : public FileReaderSubject {
  2. public:
  3.     std::string readFile(const std::string& fileName) override {
  4.         std::ifstream file(fileName);
  5.         if (file.is_open()) {
  6.             std::string content((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
  7.             file.close();
  8.             return content;
  9.         }
  10.         return "File not found or cannot be opened.";
  11.     }
  12. };
复制代码
代理(Proxy)


  1. class FileReaderProxy : public FileReaderSubject {
  2. private:
  3.     RealFileReader* realReader;
  4.     std::unordered_map<std::string, std::string> fileCache;
  5. public:
  6.     FileReaderProxy() : realReader(nullptr) {}
  7.     std::string readFile(const std::string& fileName) override {
  8.         if (fileCache.find(fileName)!= fileCache.end()) {
  9.             return fileCache[fileName];
  10.         }
  11.         if (!realReader) {
  12.             realReader = new RealFileReader();
  13.         }
  14.         std::string content = realReader->readFile(fileName);
  15.         fileCache[fileName] = content;
  16.         return content;
  17.     }
  18.     ~FileReaderProxy() {
  19.         delete realReader;
  20.     }
  21. };
复制代码
三、应用场景

远程代理


捏造代理


掩护代理


四、优缺点

优点


缺点


代理模式在许多场景下可以或许为系统带来诸多好处,但需要综合考虑其优缺点,根据实际需求合理使用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4