实例化对象简写

本文关键字:对象 实例化 | 更新日期: 2023-09-27 18:07:11

我想知道这是不是一个愚蠢的问题,但是无论如何…

考虑:

this.dataSourceFacade = new DataSourceFacade();
this.SomeGrid.DataSource = this.dataSourceFacade.GetData();

比较
this.SomeGrid.DataSource = new DataSourceFacade().GetData();

假设第二种方法是唯一使用它的地方,那么它有什么问题吗?

理查德

实例化对象简写

简短而简单:不,第二种方法没有错……在大多数情况下,甚至更可取,因为更干净(没有不必要的局部变量),更好地读取和维护:-)

第二种方法,

this.SomeGrid.DataSource = (new DataSourceFacade()).GetData();

您将失去对DataSourceFacade对象的引用,如果您以后需要它,例如设置其他东西,获取其他东西,或调用该对象的方法。

从长远来看,它确实使代码更容易阅读和维护。也应该是"fine" to do。

然而,你只是创建对象的一个实例,只是为了调用它的一个方法,我怀疑这个方法是否可以被拉出到一个静态方法中。

:

this.SomeGrid.DataSource = DataSourceFacade.GetDate();

同样在静态实现中,我会尽量不实例化不使用的对象实例,如果可能的话。

就我个人而言,我喜欢单元测试,但这两种方法都会限制你的能力。

至少我会创建一个工厂来做这样的事情

this.SomeGrid.DataSource = DataSourceFacade.GetDataSource();

this.SomeGrid.DataSource = DataSourceFacade.Factory.GetDataSource()

至少通过这种方式,您可以添加在将来以某种方式更新工厂的能力,以便进行测试。