我正在编写一个将资源列表作为输入的代码,并尝试锁定其中的每一个。如果有人失败,它会努力释放所有资源的锁。这意味着要么“所有”资源有锁,要么根本没有。我有两种方法,我没有看到任何显着的好处。在这种情况下,标准的编码实践是什么?是否有任何设计模式的名称?
OPTION 1:
// one function taking on 2 responsibilities. appears bad to have unlock code in locking function
public boolean getLock(List<Resource> resources) {
for (Resource r : resources) {
if (! Lock.getLock(r)) {
releaseLocks(resources);
return false;
}
}
return true;
}
OPTION 2:
public boolean getLock(List<Resource> resources) {
for (Resource r : resources) {
if (! Lock.getLock(r)) {
return false;
}
}
return true;
}
public boolean stateChecker(List<Resource> resources) {
if (!getLock(resouces)) {
releaseLocks(resources);
return false;
}
return true;
}