我正在尝试理解.NET框架创建者设计System.Drawing.Image
类时所做的设计决策。它是抽象的,然而很多繁重的工作都是直接用Image
类完成的。它还定义了两种直接创建Image
对象的方法,Image.FromFile
和Image.FromStream
。
我认为抽象类的目的是为了定义一种只能由子类继承的功能。抽象类实际上定义了返回抽象类实例的方法似乎很奇怪。
为什么以这种方式实施?
答案 0 :(得分:3)
这是factory pattern的一个实例。这种模式在整个.NET框架中很流行,另一个例子是System.Net.WebRequest.Create,它可以根据指定的Uri返回不同的子类。
模式的原因是可以根据图像类型创建不同的Image子类,例如Bitmap。