implementation du pattern abstract factory