Ewa*_*odd 36 history design-patterns language-design
今天的模式应该被视为Java和C++中的缺陷或缺失功能吗?
访客,抽象工厂,装饰器和外墙是当今Java和C++的设计模式.
明天的语言会是什么样子?他们会有什么样的模式?
Jul*_*iet 47
一些标准化的设计模式 - 适配器,工厂,命令,访问者等 - 是附加到其他语言的功能的近似.脱离我的头顶:
C#中的事件处理程序是观察者模式的烘焙版本.想一想如果每次都要自己动手观察者,如何在C#中连接事件.
命令模式包含特定的行为,因此您可以在方法之间传递对象,这些方法或多或少地接近第一类函数.
策略模式允许您动态地将行为插入到对象中,以便您可以随时通过将一个行为与另一个行为交换来修改对象.在函数式编程世界中,我们称之为函数组合.
抽象工厂模式接受参数并返回工厂作为结果.通常,您可以将工厂视为函数的基本包装(更具体地说,是构造函数周围的包装器).因此,您将参数传递给函数并获取函数作为结果,使此模式非常类似于currying.
装饰器模式允许您在运行时附加或删除对象的行为.在JavaScript中,由于"原型"OO模型,您可以添加或删除函数而无需显式实现装饰器模式.
因此,我们有一堆模拟其他语言固有特征的设计模式.功能嫉妒并不一定表示语言的弱点 - 它是你需要一遍又一遍地写出的样板代码,它表明了语言的弱点.
Mat*_*nes 18
我不会称它们为缺陷.
高阶语言处理比低阶语言更高级别的概念.从构造角度考虑它.
您可以在炼油厂层面建造一座建筑物,铣削木材,冶炼钢材,然后将建筑物组合在一起.
您可以购买板材和钢梁,并将它们构建成建筑物.
您可以购买预制的墙壁和桁架,并将它们构建到建筑物中.
您可以购买建筑物,然后从内部开始.
正在建造一座建筑物,其中有木板和大梁缺少预制墙的特征,或者在某种程度上有缺陷?
S.L*_*ott 10
在软件设计中做三次或更多次的每一件事都会形成一种模式.
每次重复.每次重复.每次重复.
有些人会用很酷的名字来封印.这些成为设计模式.有意识的重复.
有些只是"最佳实践"或"这对我有用".这些是没有清晰度的设计模式.
有些只是"你经常做的事情".这些是设计模式,没有任何有意识的认识,你在重复自己.
设计模式与语言弱点或不完整无关.他们拥有的一切做的好点子,有意识地重复使用.
今天的设计模式不是明天语言的皇家之路.语言范式并没有通过一系列"以前语言的错误修复"来推进.如果是这样,我们永远不会创建Visual Basic.
与简单的编程语言功能集相比,设计模式是一个更大,更广泛的智能工具.