有时由于实现上的差异,有必要为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,则还可以使用Strategy和Template Method之类的模式隐藏其中一些替代实现。但是,当您选择实现时,您可能仍会回到ProductName
。