【发布时间】:2011-03-03 10:29:13
【问题描述】:
简而言之:我想根据特定条件允许/禁止执行 Java 方法。最好的解决方案/机制/技术是什么?
长问题,通过一个(诚然愚蠢的)示例:
假设我在车辆控制器中有几种方法,例如void openWindow(Window w)、void openRoof()、void keepSpeed(double speedKmh)。如果下雨,不应该调用openRoof,我们希望建立一个机制来确保它。类似地,如果速度低于 60 公里/小时,则禁止使用 keepSpeed,例如在下大雨时使用 openWindow,或者在高于时速时使用 100 km/h。
由于访问雨量/速度传感器需要几行代码,而且这些条件无处不在,我不想在方法体中使用 use 断言或条件,但我宁愿让它们易于使用由域开发人员。此外,我希望将安全问题与打开窗口等的实际逻辑分开。更复杂的自定义条件也应该易于配置。
例如,我想要这个:
@ForbidIf('default:rain') openWindow();
@ForbidIf('default:speedBelow(60)') keepSpeed();
@ForbidIf('default:speedAbove(100)', 'custom:rainsALot') openWindow();
如果有帮助,这个应用程序是一个 Spring 驱动的客户端-服务器应用程序。
【问题讨论】: