我是否过度使用Singleton模式?

时间:2015-06-20 22:49:12

标签: java android architecture software-design

我正在自由起诉Singleton模式,我在想;什么时候够了,够了?这些都是我现在的单身人士。我没有把所有这些都用在一起,因为有些人称之为其他人。

    Database db = Database.getInstance(this);  // wrapper for the library
    Realm realm = Realm.getInstance(this);  // library I use
    AppUtils appUtils = AppUtils.getInstance(this); // app specific functions that manipulate database queries to produce targeted values
    Utils utils = Utils.getInstance();
    Generator gen = Generator.getInstance(this); // necessary for the library

我在考虑做类似

的事情

AppFragments fr = AppFragments.getInstance(this, AttributeCommonInEveryActivity>)

或者我应该与它进行交互并执行BlerpActivity extends BlourpActivity

最后,要清除可能影响您意见的任何偏见。我知道似乎我只使用一种设计模式,但我不是。我正在考虑设计和实用工具^ _ ^

1 个答案:

答案 0 :(得分:4)

是。是的,你是。但在我开始之前,我认为你甚至不会使用单身模式。

采用$( document ).ready(function() { $(".opacity").delay(1000).css({"opacity": ".5",}).delay(1000).css({"opacity": "1",}); }); 之类的方法,假设<?php function include_build_page_constants($file) { global $page_constants ; $before = get_defined_constants(true); include_once($file); $after = get_defined_constants(true); if ( isset($after['user']) ) { if ( isset($before['user']) ) { $current = array_diff_assoc($after['user'],$before['user']); }else{ $current = $after['user']; } $page_constants[basename($file)]=$current; } } include_and_build_page_constants('page1.php'); include_and_build_page_constants('page2.php'); // test the array echo '<pre>'.print_r($page_constants,true).'</pre>'; ?> Realm.getInstance(this)。如果this是单身人士,则只会存在一个实例。如果这是真的,那你为什么要传递FooClass如果您传入其他Realm

,结果会有所不同吗?

现在对于实际问题 - 单身人士的烦恼已被manybefore覆盖,所以我不会进入那个问题。相反,我会告诉你一个替代方案:依赖注入。

以下是this类的单身(?)版本:

FooClass

现在,这是DI版本:

Realm

你告诉我哪一个看起来更短。