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

发布于 2024-11-17 18:03:27 字数 280 浏览 0 评论 0原文

我试图了解 .NET 框架创建者设计 System.Drawing.Image 类时所做出的设计决策。它是抽象的,但许多繁重的工作是直接使用 Image 类完成的。它还定义了两个直接创建Image对象的方法,Image.FromFileImage.FromStream

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

为什么要这样实现呢?

I'm trying to understand the design decision taken when the .NET framework creators designed the System.Drawing.Image class. It is abstract, and yet a lot of the heavy lifting is done directly with the Image class. It also defines two methods for directly creating an Image object, Image.FromFile and Image.FromStream.

I thought the purpose of an abstract class is to faciliate a way to define functionality that should only be inherited by child classes. It seems weird that an abstract class would actually define methods that return an instance of the abstract class.

Why was it implemeted this way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

捂风挽笑 2024-11-24 18:03:27

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

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

This is an instance of the factory pattern. This pattern is prevalent throughout the .NET framework, another example is System.Net.WebRequest.Create, which can return a different subclass depending on the specified Uri.

The reasoning for the pattern is that a different subclass of Image, such as Bitmap, can be created depending on the image type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文