使用API时,您将以强制方式实例化对象并
调用方法.另一方面,良好的DSL应该是声明性的,表示问题域中的规则和关系,而不是要执行的指令.此外,理想情况下,DSL应该是非程序员(API不是这种情况)的可读性和可
修改性.
另请注意内部和外部DSL之间的区别.
>内部域特定语言嵌入在编程语言中(例如Ruby).它易于实现,但DSL的结构取决于它所嵌入的父语言.>外部域特定语言是一种单独的语言,在设计时考虑了特定的域.它在语法方面为您提供了更大的灵活性,但您必须实现代码来解释它.它也更安全,因为编辑域规则的人无法访问母语的所有功能.