mardi 1 décembre 2015

Static factory methods and mocking

How do you reconcile using static factory methods and mocking?

Many people would just say: Don't use static factory methods, use DI instead.

Well, sometimes you cannot avoid static factory methods. Consider the following use cases, which should be familiar:

Imagine you have a class called Option, like in scala. You can't avoid using a static factory method if you want to reuse same instance for all absent values.

As soon as you go new Option(null) you create a new option object, you cannot return the same object over and over again.

Similar use case is the Integer.valueOf() which will reuse integer objects for values below 128. Impossible to do without using a static factory method.

Another advantage is that factory methods are more descriptive than new keyword.

So how do you guys deal with having to use static factory methods and at the same time wanting to use inheritance and mocks?

Thank you.

Aucun commentaire:

Enregistrer un commentaire