[Bindable]
public class ProductsCache
{
private static var _products:ArrayCollection;
public function get products():ArrayCollection{
return _products;
}
public function set products(value:ArrayCollection):void{
_products = value;
}
}
By the name of the class you see my intentions with this bit of code. I intend to set a "cache" of registries that I intend to use across modules and update accordingly. The get method is used for dropdown lists, the set method after a successful insert statement.
This works good for my needs. But I still need your feedback.
EDIT: I don't know what voting means here. Is this good code for its purpose? or do I really need to learn factories and dependency injections?
I was previously using a singleton for this, but I wasn't comfortable with that, I want to keep the singleton excusively for credential and config data. And use this for the rest of the app functionality.
-
\$\begingroup\$ Feedback on what? If you should use static variables? If you should do it like that? \$\endgroup\$Bobby– Bobby2011年10月05日 07:06:27 +00:00Commented Oct 5, 2011 at 7:06
-
\$\begingroup\$ Yep. That's important to me. \$\endgroup\$enon– enon2011年10月05日 14:25:14 +00:00Commented Oct 5, 2011 at 14:25
-
\$\begingroup\$ Damn it Jim, state in your question what you want! \$\endgroup\$Bobby– Bobby2011年10月05日 14:26:36 +00:00Commented Oct 5, 2011 at 14:26
1 Answer 1
Using a static variable will have the same effect as using a singleton!
Imagine if you had two instances of ProductsCache
:
var a: ProductsCache = new ProductsCache();
var b: ProductsCache = new ProductsCache();
a.products = someArrayCollection;
b.products = anotherArrayCollection;
Now, because it's using a static variable, a.products
will be anotherArrayCollection
.
"Do I really need to learn factories and dependency injections?"
Yes, please, learn Dependency injection! You won't regret it! I don't think for this particular case you need a Factory pattern, but it never hurts to learn that too.
Dependency Injection is not that hard actually, the golden rule is: Whenever an object needs your ProductsCache
, give them a reference to your ProductsCache
. Don't use something like ProductsCache.instance.products
. Tell objects about the ProductsCache you want them to use, don't let them ask a singleton about it. Very easy rule to remember: Tell, don't ask.