为什么System.Drawing.Image类定义为抽象,同时还定义了将其作为类型返回的方法?

时间:2011-06-28 23:30:01

标签: .net abstract-class

我正在尝试理解.NET框架创建者设计System.Drawing.Image类时所做的设计决策。它是抽象的,然而很多繁重的工作都是直接用Image类完成的。它还定义了两种直接创建Image对象的方法,Image.FromFileImage.FromStream

我认为抽象类的目的是为了定义一种只能由子类继承的功能。抽象类实际上定义了返回抽象类实例的方法似乎很奇怪。

为什么以这种方式实施?

1 个答案:

答案 0 :(得分:3)

这是factory pattern的一个实例。这种模式在整个.NET框架中很流行,另一个例子是System.Net.WebRequest.Create,它可以根据指定的Uri返回不同的子类。

模式的原因是可以根据图像类型创建不同的Image子类,例如Bitmap。