静态方法实例化类和动态方法实例化类的区别

bensharp 2008-06-02 04:08:55
方式1:
XmlReader reader = XmlReader.Create("D:/1.xml");
方式2:
SqlConnection conn = new SqlConnection(connectionString);

这样的2种方式来实例化类有什么区别,哪种方式更好呢?


好像从面向对象的角度上来说,在抉择使用实例化类或静态类时,应该逻辑上的相关性,如果对象的每个实例属性都不一样,就应该用实例化类。如果一样的应该静态类

但是XmlReader reader = XmlReader.Creat();这种实例化的方式,让我有点迷惑,感觉介于实例化类和静态类之间。

请指点指点,这种实例化的方法跟一般的有什么区别?一般来说应该在什么时候使用?

注:.net 1.1的时候XmlReader reader = new XmlReader()是用这种方式实例化,到了.net2.0的时候,就改了XmlReader reader = XmlReader.Creat(),书上说这实例化方式比以前的实例化方式具有更好的一致性。
...全文
278 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
noky 2008-06-03
  • 打赏
  • 举报
回复
类的封装跟怎么扯到设计模式上去了,都不是一个范畴的东东!
noky 2008-06-03
  • 打赏
  • 举报
回复
好好看看MSDN吧:
"
public abstract class XmlReader : IDisposable
XmlReader 提供对 XML 数据流的只进只读访问。XmlReader 类符合 W3C 可扩展标记语言 (XML) 1.0 和“XML 中的命名空间”建议。

当前节点指读取器定位到的节点。使用任何读方法推进读取器并且属性反映当前节点的值。

重要事项:
虽然 Microsoft .NET Framework 包含 XmlReader 类的具体实现,如 XmlTextReader、XmlNodeReader 和 XmlValidatingReader 类,但是在 2.0 版本中,建议的做法是使用 Create 方法创建 XmlReader 实例。有关更多信息,请参见创建 XML 读取器。
"
XmlReader是抽象类,在XmlReader内部封装了许多的东西,但是这些东西是不让你知道的,但是既然有XmlReader这个对象就得让人使用吧,你总的有方法去实例化这个对象,让人使用吧,这就是面向对象中封装的一个具体应用罢了!如果是你自己的类,内部有需要的算法、结构等等的东西在里面,又不想让人看到,但是要让人使用,就可以想XmlReader类一样进行封装,将实例化接口暴露出来!!
zlkingdom 2008-06-03
  • 打赏
  • 举报
回复
同意楼上观点,主要原因还是设计模式造成的
心情解码 2008-06-03
  • 打赏
  • 举报
回复
第二种常用..
amandag 2008-06-02
  • 打赏
  • 举报
回复
一般使用静态方法可能是因为要使用设计模式中的创建模式来创建对象,比如单例模式,工厂模式等
关于为什么要用这些模式,楼主还是参阅一下相关资料

而使用构造函数创建对象当然是我们经常用的
fuadam 2008-06-02
  • 打赏
  • 举报
回复
因为XmlReader是个抽象类所以不能直接创建实例,而为了方便不让你去记忆到底用哪个派生类所以就提供了一个Create方法
大飞飞虫 2008-06-02
  • 打赏
  • 举报
回复
我进来瞎说两句.
个人觉得这完全是设计结构方面的需要才有 xxx.create 这样的方法. 或者说是父类里有特殊的逻辑需求, 我曾经有遇到这样的情况为了结构合理而不得不这样写. 否则一般都new就够了
再比如工厂模式.


-----------
好像从面向对象的角度上来说,在抉择使用实例化类或静态类时,应该逻辑上的相关性,如果对象的每个实例属性都不一样,就应该用实例化类。如果一样的应该静态类
--------------
这句我不是很赞成,否则大多数应该归为静态类了

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧