|
|
1
5
如果我理解您所说的话,您认为新的语言特性应该能够克服通常与实现设计模式相关联的样板代码的需求。 这已经发生了,并不是什么新鲜事。
以单例模式为例,它是最著名的模式之一。每个人都知道如何实现它:您声明构造函数
对于概念上非常简单的东西,这是相当多的代码行。
在scala中,不需要任何样板文件来创建单例。以补充
在运行时,将有一个
|
|
|
2
1
有一种观点认为,语言中设计模式的存在表明语言本身的设计存在缺陷,下一代语言应该从上一代常见的设计模式中学习。 例如,请参见Peter Norvigs famous presentation 关于动态语言中不可见的设计模式。 事实上,很容易想到这个过程已经发生的例子——如您所说,foreach循环可以说是嵌入的迭代器,ruby有一个singleton mixin来继承,任何具有多方法的语言都不需要访问者模式。groovy有内置的构建器。 你工厂的具体例子听起来有点像 Noop 将依赖注入集成到语言规范中。 当然,只有到目前为止,类型检查程序才能保证代码的正确性(目前)。而且,将设计模式嵌入到语言中并不能免除对核心概念的熟悉,或者对手头问题的应用进行认真考虑的需要。 你的例子很有趣,你建议在语言中添加几个关键词和规则(我不太熟悉C),这对语言没有明显的好处。“工厂”关键字会告诉类型检查器(或另一个程序员)从声明“AF”等价于Java接口,并将“产品”作为其方法的返回类型吗? |
|
|
3
0
我想你在做什么。但是你忽略了一点(在我看来),那就是你试图指定一个设计模式,正如Mharris所说,随着时间的推移,这些模式往往会变得不受欢迎或过时,使得依赖于它们的语言不是一个好主意。 我认为,可能有一种“复合”语言,其中有两个工件:设计规范语言(与实现语言耦合,不要认为是UML)和实现。举个例子,可以这样做: 设计规范:
注意,如果这样做,因为设计规范是抽象的(不需要在那里指定低级的细节,然后),所以它可以有便于编写规范的构造。知道在规范中,您不需要说方法是公共的还是私有的,设计规范(不包括算法伪代码)只关心公开可见的行为,而不关心私有的实现细节。 实施:
这里可以使用两种方法:
请注意,实现可以忽略更高级别的内容,比如类的可见性和方法的可见性,因为这已经在设计级别(dry)指定了。如果你问我,这种类型的语言也必须有一个专门的IDE,以便提供关于类型设计的上下文信息。正如JeffAtwood所评论的,任何新语言都应该有其专门的IDE。 |