added OCP in Factory Method Pattern