草庐IT

singletons

全部标签

ios - AppDelegate 属性还是 Singleton 对象?

这更像是一个设计最佳实践问题:当您设计一个基于位置的应用程序的结构时。locationManager显然是一个重要的实例,应该允许其他对象轻松访问。你应该把它作为appDelegate的属性吗?还是一个单独的单例?在什么情况下您更喜欢其中一种?我知道两者都可以,但我想确保我以正确的方式做事,而不是把所有东西都混在一起。非常感谢您的意见! 最佳答案 都没有。在您需要的地方通过自定义初始化方法或属性传递位置管理器对象。这将符合SOLIDprincipalsS,O&D(单一责任、开闭、依赖倒置)。还可以更轻松地使用模拟进行测试。

ios - NSUserDefault vs Global Variable vs CD vs Singleton——一个具体的例子

在我的健身应用程序中,我存储了各种需要在整个应用程序中以不同程度访问的值。目标、最大值、最小值、类名、fontColors、笔画、gradientColors等。由于应用程序是在我学习编码的同时创建的,所以我混合使用了上述所有存储方法——一团糟。要点,目标变量(如10,000步或目标体重)在整个应用程序中出现并经常在代码中使用,但用户不会经常更改它们经常。最重要的是,目标始终如一,在整个版本更新过程中也是如此,因为如果用户不得不重新添加它们,他/她会很生气。存储目标变量的最佳做法是什么,可能有20个左右? 最佳答案 通用规则如下:可

iphone - "Your Second iOS App": How do I implement a Singleton?

我还在努力改进"MySecondiOSApp",这是Apple提供的教程。这是Storyboard的图片,其中添加了对应该发生的事情的评论。单击完成按钮(第3步)后,实际屏幕应返回到主菜单(3.a),而完成的BirdSightingObject应添加到BirdMasterViewController列表中(3.b).所以我想我可以使用单例,因为只能同时添加一个对象,这使得从不同的类进行访问变得更加容易。在教程中已经给出了一个用于数据处理的类“BirdSighting”,它可能被用作单例。但由于我对OOP和设计模式只有初级水平的知识,我不知道我是否可以使用它,或者我是否必须引用现有类编写

php - PDO 和 Singleton 类的数据库连接

我正在尝试与PDO和Singleton类建立数据库连接,但我无法从数据库中获取数据。我一直在阅读这方面的内容,但我仍然不确定如何从另一个文件调用我的数据库文件中的Singelton类并打印出结果。我现在遇到的错误是Fatalerror:Calltoundefinedfunctionquery()在我的db.php文件中,这是我的数据库文件中的最后一个函数。但是我相信该功能已定义。感谢任何帮助!这是我的数据库(db.php)连接文件:_db=newPDO('mysql:host=localhost;dbname=mvcuser','root','');$this->_db->setAtt

php - Singleton 和 Registry 设计模式有什么区别

我对这两种模式有些困惑:单例检查实例是否存在返回它,或创建一个新实例。注册表检查实例是否存在返回它,或者创建一个新实例并存储它。它们有什么区别? 最佳答案 两者都是关于实例控制的。不同之处在于,Singleton只允许给定类的一个实例,而Registry持有键到实例的1-1映射。通常,键是(或代表)一个类,而值是该类的一个实例。例如,CodeIgniter框架拥有一个注册表,其中包含您加载的每个库/模型/Controller/助手的实例,并且每次都会返回这些相同的实例。 关于php-Si

android - 如何在 Singleton 和 SharedPreferences 类中传递应用程序上下文

如何将应用程序上下文从Singleton类传递到SharedPreferences?我在其onActivityCreated(BundlesavedInstanceState)方法中有一个fragment和一个GridView,单击项目时,我在logcat中收到NullPointerException:03-3005:12:54.784:E/AndroidRuntime(1950):FATALEXCEPTION:main03-3005:12:54.784:E/AndroidRuntime(1950):java.lang.NullPointerException03-3005:12:54

android - 在@Singleton 上释放 ORMLite 助手

我有一个@Singleton类,我在其中注入(inject)了一个OrmLiteSqliteOpenHelper实例。我真的需要调用OpenHelperManager.releaseHelper()吗?如果我这样做,应该在哪里以及如何完成,因为该类没有扩展任何我可以到达onDestroy的Android基类? 最佳答案 有一个ORMLite演示此调用的示例Android项目HelloAndroidNoBase.我会检查一下。主要Activity的相关代码部分包含在下面。您需要在每个Activity或其他使用数据库的类中包含此类代码。

android - 如何使用 robolectric 覆盖注入(inject)的 @Singleton 类?

我有一个fragment,我正在尝试使用使用@Singletonapi类的Robolectric(和Mockito)进行测试。我正在尝试以一种可以为每个测试自定义响应的方式来模拟单例。这是我的fragment引用的API类:@SingletonpublicclassMyApi{@InjectpublicMyApi(Contextcontext){//Dosomething}publicMyObjectgetMyFeed(){}}这是我要设置的测试类:@RunWith(RobolectricTestRunner.class)publicclassMyFragmentTestextends

java - Dagger 2.11 : Local Singleton when using @ContributesAndroidInjector

我有一个使用@ContributesAndroidInjector注释(https://google.github.io/dagger/android.html)的Dagger设置。ComponentApplication/\SubcomponentDrawerActivitySubcomponentSubActivity|SubcomponentDrawerFragment在SubActivity和DrawerActivity中,我使用了标记为@Singleton的相同存储库实例。@Singleton@Component(modules={AndroidInjectionModule

android - SyncAdapter中的Singleton Room数据库触发LiveData

我很难在我的SyncAdapter中将Room用作单例。我使用Kotlin。我的房间等级@Database(entities=[(Product::class)],version=1,exportSchema=false)abstractclassAppDatabase:RoomDatabase(){abstractfunproductDao():ProductDaocompanionobject{@VolatileprivatevarINSTANCE:AppDatabase?=nullfungetInstance(context:Context):AppDatabase=INSTAN