当前位置:  开发笔记 > 编程语言 > 正文

什么时候应该写静态方法?

如何解决《什么时候应该写静态方法?》经验,为你挑选了4个好方法。

所以我理解静态方法或字段是什么,我只是想知道何时使用它们.也就是说,在编写代码时,设计适合使用静态方法和字段.

一种常见的模式是使用静态方法作为静态工厂,但这可以通过重载构造函数来轻松完成.正确?例如:

var bmp = System.Drawing.Bitmap.LoadFromFile("Image01.jpg");

至于静态场,是否最好使用singelton-objects?



1> shoosh..:

静态方法通常对不需要来自类实例(来自this)的任何数据的操作有用,并且可以仅使用其参数来执行其预期目的.
一个简单的例子Point::distance(Point a, Point b);就是计算两点之间距离而不需要实例的方法.

对于不会经常更改并且由类的所有实例使用的常量,静态字段非常有用.


因此,仅当我们要访问“此类”类的数据成员时,才应创建非静态方法?

2> Lou Franco..:

当您使用静态工厂时,它可以更好地了解意图 - 它还允许您拥有采用相同参数类型但具有不同含义的不同工厂.例如,假设Bitmap有LoadFromResource(字符串) - 不可能有两个构造函数都接受字符串.

编辑:来自stevemegson的评论

静态工厂也可以返回null,并且可以更容易地返回从缓存中获取的实例.我的许多类都有一个静态FromId(int)来从主键获取实例,如果有的话,返回一个现有的缓存实例.



3> JacquesB..:

我会说,只要你有独立于实例状态的函数,就使用静态方法.不依赖于任何实例字段.

方法所依赖的非本地状态越少,理解起来就越容易,因此static对于代码的读者来说是一个有用的信号.



4> Corbin March..:

我通过记住实例方法在单个对象上/内部工作而保持清晰,而静态方法为类做了一些事情.

在LoadFromFile()的情况下,您需要一个静态方法,因为如果加载失败,您需要空引用 - 该实例尚不存在.如果您将其实现为构造函数,则必须在失败时抛出异常.

静态的其他好用途:比较(obj a,obj b),删除(obj a)数据对象(一个对象不能删除自己,因为它的引用仍然存在),或者静态类用于过程代码,这是真的不能在一个物体中建模.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有