日期:2014-05-19  浏览次数:20715 次

为什么用 静态方法去替代 类的 构造函数
我发现Image   类没有显示的给出构造函数,而是用   FromFile()这个静态方法,来实例画对象,为什么呢?
这样做有什么好处?〉

------解决方案--------------------
class FileImage : Image
{
}

abstract class Image
{
public static Image FromFile()
{
return new FileImage();
}
}
------解决方案--------------------
我刚试了一下,FromFile 打开的如果是bmp或ico文件,返回的是Bitmap类,如果打开的是wmf文件,则返回 Metafile 类。
要是完全按设计模式的说法,应该是由一个类厂来实现这个功能,
static class ImageFactory
{
public static Image FromFile(){}
}
MS的实现是将类厂合并到了Image类里,虽然不完全符合规范,但也无不可。
------解决方案--------------------
一般来说,工厂设计模式的Create方法我们就称为工厂方法,而广义的工厂方法就是指创建不同类型对象的方法。