设计模式 – 设计模式真的是语言弱点吗?

今天的模式应该是be seen as defects or missing features in Java and C++

>子程序是50s和60s中机器语言的设计模式。
>面向对象类是C在70年代的设计模式。
>访问者,抽象工厂,装饰者和外观是今天Java和C的设计模式。

明天的语言会是什么样子?他们会有什么样的模式?

一些标准化的设计模式 – 适配器,工厂,命令,访问者等 – 是被烘焙到其他语言的功能的近似。离开我的头顶:

> C#中的事件处理程序是观察者模式的烘焙版本。想想你如何连接在C#中的事件,如果你必须滚动自己的观察者每次。
>访问者模式是multimethods,message forwarding的详细近似,或pattern matching的非常弱的形式。
>命令模式包装一个特定的行为,所以你可以在方法之间传递对象,或多或少近似一级函数。
>策略模式允许您动态地将行为插入到对象中,以便在任何时候,您可以通过将另一个行为交换出来来修改对象。在函数编程世界中,我们称之为函数组合。
>抽象工厂模式接受一个参数,并返回一个工厂作为结果。一般来说,你可以认为工厂基本上是围绕函数的包装器(更具体地说,是构造器的包装器)。所以,你传递参数到一个函数,并得到一个函数作为结果,使这个模式非常类似于currying。
>装饰器模式允许您在运行时附加或删除对象的行为。在JavaScript中,由于“原型”OO模型,您可以添加或删除函数而不显式实现装饰器模式。

所以,我们有一堆设计模式,模仿其他语言固有的特性。特征羡慕不一定表示语言的弱点 – 它是你需要一遍又一遍写的样板代码,这表明语言弱点。

http://stackoverflow.com/questions/1579162/are-design-patterns-really-language-weaknesses

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:设计模式 – 设计模式真的是语言弱点吗?