# Getting and setting a static variable

[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.

-
Feedback on what? If you should use static variables? If you should do it like that? –  Bobby Oct 5 '11 at 7:06
Yep. That's important to me. –  overmann Oct 5 '11 at 14:25
Damn it Jim, state in your question what you want! –  Bobby Oct 5 '11 at 14:26

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.

-
+1 Dependency Injection FTW! :) –  Mat's Mug May 9 at 19:17