我一直在PHP中使用Singleton类作为注册表对象.作为所有Singleton类,我认为main方法如下所示:
class registry
{
public static function singleton()
{
if( !isset( self::$instance ) )
{
self::$instance = new registry();
}
return self::$instance;
}
public function doSomething()
{
echo 'something';
}
}
Run Code Online (Sandbox Code Playgroud)
所以每当我需要一些注册表类时,我都会使用这样的函数:
registry::singleton()->doSomethine();
Run Code Online (Sandbox Code Playgroud)
现在我不明白创建一个普通的静态函数有什么区别.如果我只使用普通的静态类,它会创建一个新对象吗?
class registry
{
public static function doSomething()
{
echo 'something';
}
}
Run Code Online (Sandbox Code Playgroud)
现在我可以使用:
registry::doSomethine();
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释单例类的功能是什么.我真的不明白这一点.
从一开始C++用户的角度来看,我看到单例类有用的唯一原因与我想要使用静态变量时类似.你们知道什么时候最适合使用单身人士课程吗?
我想知道仅使用静态方法创建类的原因,例如Console或Convert类.我能想到的唯一原因是将相关函数组合在一起,所以这与命名空间有何不同.
任何人都可以清楚地解释一下java singleton设计模式类vs java final类.我们可以使用final类而不是使用singleton类,对于final类,我们可以创建类的实例并使用其中的方法,但不覆盖属性,如果该方法在final类中是静态的,我们可以像ClassName一样调用方法.getMethod,为什么我们选择单身而不是最后一堂课.
我现在一直在谷歌搜索大约一小时,我仍然不清楚单身是什么.任何人都可以让我更清楚,也许发布一个代码示例?
我只知道你是否只能拥有一个给定类的一个实例.但是你不能只用那个静态类吗?
提前致谢!
可能重复:
静态类和单例模式之间的区别?
我在想,
像Java的Math类这样的类,其中所有方法都是静态的,会被认为是单例吗?或者单身人士是否必须拥有一个实例,例如Math.getInstance().abs(...:)才有资格成为单身人士?
谢谢
在多线程应用程序(ASP.NET MVC)上,我需要一个全局设置类,其中包含从Web.Config中获取的常量和值.
我想让这个类静态,作为单身......并锁定?
public static class Settings {
public static LoggerSettings Logger;
public static MailerSettings Mailer;
public class LoggerSettings {
public String Levels { get { return ConfigurationManager.AppSettings["Logger.Levels"]; } }
public const String Report = "team@xyz.com";
} // LoggerSettings
public class MailerSettings {
public String Contact { get { return ConfigurationManager.AppSettings["Mailer.Contact"]; } }
} // MailerSettings
}
Run Code Online (Sandbox Code Playgroud)
我想我应该实行双锁?没有?
我不确定这样做的最好方法.我能帮忙吗?
谢谢你,米格尔
我是iOS的新手,我对如何使用Alamofire的单身以及单身如何重要感到困惑.我创建了一个networkWrapper类,因为我编写了Alamofire post和get方法,但我没有使用singleton.
如何用单例创建一个包装类的Alamofire?我怎样才能获得真正重要的所有技巧?
下面是我的包装类代码:
import Foundation
import UIKit
import Alamofire
import SwiftyJSON
class AFWrapper: NSObject {
//TODO :-
/* Handle Time out request alamofire */
class func requestGETURL(_ strURL: String, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void)
{
Alamofire.request(strURL).responseJSON { (responseObject) -> Void in
//print(responseObject)
if responseObject.result.isSuccess {
let resJson = JSON(responseObject.result.value!)
//let title = resJson["title"].string
//print(title!)
success(resJson)
}
if responseObject.result.isFailure {
let error : Error = responseObject.result.error!
failure(error)
}
}
}
static func requestPOSTURL(_ strURL : String, params …Run Code Online (Sandbox Code Playgroud) 我最近一直在阅读单身人士,我常常看到如下代码:
private static SingletonDemo instance = null;
Run Code Online (Sandbox Code Playgroud)
在Singleton类中作为一个字段.
我不想特别了解'静态'在做什么以及为什么需要它.
我在这里阅读了Oracle网站.并且他们使用a numOfBicycles(这是你有多个自行车的时候)的例子来证明使用静态字段,但我认为我正在理解为什么在你只是实例化1个实例时使用它.
读过静态类和单例模式之间的区别?,没有一个答案列出了在单例上使用静态方法的任何优点,这让我想知道为什么有人会想要使用静态方法.