我正在构建一个实现tftp协议的服务器。我的作业要求为最近请求的文件创建一个缓存。我想了解的是关于设计的,请看下面的例子:
服务器请求文件到缓存缓存没有文件缓存从文件系统读取文件缓存将文件提供给服务器
缓存应该从文件系统读取还是服务器应该从缓存读取,如果文件丢失,则从文件系统读取文件并将其放入缓存中?
发布于 2011-08-18 04:08:23
从复杂性的角度来看,我绝对建议缓存从文件系统中读取文件。通过这种方式,您的实现将更加清晰。
深入挖掘:你触及到了single responsibility principle。理想情况下,您希望系统的组件只做一件事,而且做得很好。您试图避免的是一个做所有事情的God object,因为这会阻止您的代码具有可伸缩性和可重用性。现在,让我们来看一下您提出的两个选项:
选项1:服务器读取文件系统并保存到缓存。
在这种情况下,服务器是宇宙的中心。缓存只不过是服务器的内存池,如果没有服务器,它就没有什么作用。服务器必须知道有关文件系统和缓存的所有信息,并且增强系统需要更改服务器。
仅这一描述就很明显地说明了为什么它违反了单一责任原则。对系统的任何组件的任何更改都需要对服务器进行更改--这是不好的。
选项2:缓存读取文件系统。
在此选项中,缓存充当服务器和文件系统之间的完整抽象。服务器不需要知道缓存是如何工作的。在这个问题上,甚至可以有多个级别的缓存!无论它是如何工作的,服务器都不必关心。服务器将缓存用于一种用途,即检索文件。
这种分歧也是双向的。缓存不需要知道它是如何被使用的,只需要知道它的存在是为了更快地访问文件系统。这使得它可以在以后用更好的东西交换出来(如果你决定这样做的话),还可以让它在你创建的其他项目中重用。
如果你使用选项2,你的代码将会变得更加简单和整洁。
https://stackoverflow.com/questions/7098737
复制相似问题