有时由于实现上的差异,有必要为Adobe ColdFusion vs Railo vs OpenBD编写不同的代码。

人们有为此使用的特定方法吗?

例如,打开ProductName是一种选择:

<cfswitch expression="#Server.ColdFusion.ProductName#">
    <cfcase value="ColdFusion Server">
       ...
    </cfcase>
    <cfcase value="Railo">
       ...
    </cfcase>
    <cfcase value="BlueDragon">
       ...
    </cfcase>
</cfswitch>


那是最好的方法,还是有人可以提出更好的建议?

最佳答案

当您开始使用它时,这可能是最可靠的方法。您可能更安全地进行功能检测,而不是进行显式的产品检查,但是CFML没有很多可用于此类事情的自省功能。

如果您在工作中使用CFC,则还可以使用StrategyTemplate Method之类的模式隐藏其中一些替代实现。但是,当您选择实现时,您可能仍会回到ProductName

10-07 23:53