abstract factory and junit