我想知道C#扩展方法是否基于任何现有的设计模式。
我想知道C#扩展方法是否基于任何现有的设计模式。
设计模式是一种众所周知的范例,即“当您想要实现X时,请执行Y”。在面向对象语言中(例如C#),一个众所周知的范例是“当您想要对对象的状态进行操作时,请调用其实例上的方法”。
然而,在扩展方法被创建之前,您不能在无法添加实现的对象实例上调用自己的方法(例如接口因为它们不能有实现,或库类因为它们已经编译)。扩展方法通过允许您创建外部于对象实现的方法来填补这个空白。
因此,可以说扩展方法基于这种非常简单的设计模式,即使在外部定义,也可以使作用于对象状态的方法在对象实例上可调用。
当然,如果您想要实现某些设计模式,可以使用C#扩展方法。例如,在C#中模拟混合。