请告诉我何时在 java 中使用 getInstance() 方法。 [关闭]

Posted

技术标签:

【中文标题】请告诉我何时在 java 中使用 getInstance() 方法。 [关闭]【英文标题】:please tell me when to use getInstance() method in java. [closed] 【发布时间】:2012-05-15 16:15:41 【问题描述】:

java中什么时候使用getInstance()方法,getInstance(null)是什么意思?

locationProvider = LocationProvider.getInstance(null); 

谁能告诉我上面这行的意思?

【问题讨论】:

This answer 比这里的其他人都好。 实际上,下面的答案(可以说)比上一条评论中链接的最佳答案更清晰/实用:***.com/questions/10477281/…。 【参考方案1】:

使用getInstance() 方法等的类属于singleton design pattern。 基本上,该特定类只会有一个实例,您可以通过getInstance() 获得它。

在这种情况下,LocationProvider 将永远只有一个实例,因为它是特定于设备的。您可以使用getInstance() 方法来使用共享实例,而不是创建它的新实例。在处理数据管理器和硬件接口之类的事情时,Java 中经常使用单例模式,但它不应该用于太多其他事情,因为它将您限制在单个实例中。

【讨论】:

【参考方案2】:

方法getInstance()被称为工厂方法。它用于创建单例类。这意味着只会创建该类的一个实例,而其他实例将获得该类的引用。

【讨论】:

这是不正确的。例如,Calendar.getInstance() == Calendar.getInstance()false Calendar.getInstance() == Calendar.getInstance() 返回值取决于 getInstance() 实现。如果 getInstance() 每次都返回相同的对象,上面的相等比较将返回 true【参考方案3】:

以下代码将为您提供纬度和经度。 getInstance() 将返回该特定类的实例。

    Criteria myCriteria = new Criteria();
    myCriteria.setCostAllowed(false);
    LocationProvider myLocationProvider = LocationProvider.getInstance(myCriteria);
    Location myLocation = myLocationProvider.getLocation(300);
    latitude  = myLocation.getQualifiedCoordinates().getLatitude();
    longitude = myLocation.getQualifiedCoordinates().getLongitude();

【讨论】:

以上是关于请告诉我何时在 java 中使用 getInstance() 方法。 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

何时使用类别以及何时使用子类化? [关闭]

何时不使用实体框架

告诉蓝牙模块何时连接到 Arduino

何时使用 Var 而不是函数?

何时不在 C#(或 Java、C++ 等)中使用 Regex

告诉 UIPageViewController 何时滚动(用于图像的视差滚动)