2
单一责任和自定义数据类型
在过去的几个月中,我一直要求SE和其他网站上的人员给我一些有关我的代码的建设性批评。一件事几乎每次都会弹出,我仍然不同意这个建议。:P我想在这里讨论它,也许事情对我来说会变得更加清楚。 它与单一责任原则(SRP)有关。基本上,我有一个数据类,Font它不仅包含用于处理数据的函数,而且还用于加载数据。有人告诉我这两个应该分开,加载函数应该放在工厂类中。我认为这是对SRP的误解。 我字体类的片段 class Font { public: bool isLoaded() const; void loadFromFile(const std::string& file); void loadFromMemory(const void* buffer, std::size_t size); void free(); void some(); void another(); }; 建议设计 class Font { public: void some(); void another(); }; class FontFactory { public: virtual std::unique_ptr<Font> createFromFile(...) = 0; virtual std::unique_ptr<Font> createFromMemory(...) = …