让我们举个例子。让我们考虑一个具有检索员工功能的公司实体 - getEmployees()
。一家公司可能有很多员工,因此在加载公司时不会加载员工。但是,一旦加载了员工,它们就会保存在缓存中,并在下次调用时立即检索。
现在我想在列表视图 - GUI 中显示员工列表。
我想提供一个“加载”指示,而员工是从互联网加载的。
但是,当从缓存中加载(非常快)时,显示“加载”指示器并立即删除它会很烦人。所以,当已经加载时,我根本不想显示“加载”指示器。
你将如何解决这个设计问题?你会添加一个方法getCachedEmployees()
吗?也许isEmployeesCached()
?也许将方法更改为getEmployees(boolean cache)
?
我不喜欢上面的任何一个,因为不是封装缓存,而是强调缓存——从而使软件复杂化。
还有其他想法吗?