eug*_*neK 6 .net c# design-patterns
我有大约20个具有几乎相同模式的函数,我在Site数组上运行,使用Site对象创建SiteOperation并执行一些操作(在这种情况下有一个参数但有时没有或更多)
int wantedBandwidthInLBps = 2048 / 8;
foreach (Sites site in _sitesManagement.GetAll())
{
SiteOperation siteOperation = new SiteOperation(site);
siteOperation.LimitBandwidth(wantedBandwidthInLBps);
}
foreach (Sites site in _sitesManagement.GetAll())
{
SiteOperation siteOperation = new SiteOperation(site);
siteOperation.KillJames();
}
foreach (Sites site in _sitesManagement.GetAll())
{
SiteOperation siteOperation = new SiteOperation(site);
siteOperation.FlyToMoon(2012, new TaskIdentifier(10,20));
}
Run Code Online (Sandbox Code Playgroud)
是否可以包装此代码,所以我将发送动作让我们说_sitesManagement将在所有网站上运行此操作?
尝试这个:
void PerformOperationOnAllSites(Action<SiteOperation> doIt) {
foreach (Sites site in _sitesManagement.GetAll()) {
SiteOperation siteOperation = new SiteOperation(site);
doIt(siteOperation);
}
}
...
_sitesManagement.PerformOperationOnAllSites(op => op.LimitBandwidth(wantedBandwidthInLBps));
_sitesManagement.PerformOperationOnAllSites(op => op.KillJames());
_sitesManagement.PerformOperationOnAllSites(op => op.FlyToMoon(2012, new TaskIdentifier(10,20));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |