c#扩展方法 - 设计模式

bal*_*hmi 10 c# extension-methods design-patterns

我想知道C#扩展方法是否基于任何现有的设计模式.

Gre*_*ech 11

设计模式只是众所周知的范例,即"当你想要实现X,做Y"时.面向对象语言(如C#)中众所周知的范例是"当您想要对对象的状态进行操作时,在其实例上调用方法".

但是,在创建扩展方法之前,您无法在无法添加实现的对象实例上调用自己的方法(例如,接口因为它们不能有实现,或者因为它们已经被编译而没有库类).扩展方法通过允许您在对象的实例上创建看似可调用的方法,同时在对象的实现外部定义,填充此间隙.

所以是的,可以说扩展方法基于这种非常简单的设计模式,使得对象状态的方法看起来可以从它的实例中调用.


kgi*_*kis 8

扩展方法可以被视为访客模式的替代.还建议它们可以用作适配器.

通常,语言的发展使得设计模式的需求变得不那么必要.举个例子,Lisp不需要设计模式,因为一切都是用语言构建的.所以正确的问题是,扩展方法取代了哪些设计模式?


小智 5

不,这只是语言功能。