更新界面模式
举例:
用户可以选择或填写若干条件: 关键字, 日期范围, 以及若干其他选项.
当用户填写或修改某些条件后立刻更新界面.
如何才能得到比较高的性能?
1. 分析需要更新的界面可以分成哪几块, 不需要经常更新的部分放在一起, 数据获取速度快的放在一起, 需要经常更新而且速度比较慢的(比如: 集合)放在一起.
2. 分析每个部分的更新和哪些条件关联.
3. 分析条件, 每当条件修改时, 和前次条件比较看范围是变窄还是变宽, 如果范围变窄, 不用重新获取数据了.
举例:
代码
void UpdateUI()
{
bool isKeywordsChanged = ...;
bool isDateRangeChanged = ...;
if ( isKeywordsChanged )
{
RefreshDataFromDiskOrServer();
return;
}
if ( isDateRangeChanged )
{
bool isDateRangeNarrower = ...;
if( isDateRangeNarrower )
{
RefreshDataFromMemory();
return;
}
bool isStartDateEarlier = ...;
...
}
}
{
bool isKeywordsChanged = ...;
bool isDateRangeChanged = ...;
if ( isKeywordsChanged )
{
RefreshDataFromDiskOrServer();
return;
}
if ( isDateRangeChanged )
{
bool isDateRangeNarrower = ...;
if( isDateRangeNarrower )
{
RefreshDataFromMemory();
return;
}
bool isStartDateEarlier = ...;
...
}
}