Java中工厂类的目的

Mar*_*cek 6 java design-patterns factory

我已经使用Java很长一段时间了,但我从来没有发现过,有什么factories特别之处.有人可以向我解释一下吗?我有什么理由想要实现自己的factory(如果可能的话)?

小智 12

工厂模式非常适合解耦课程.例如,让我们假设一个公共接口Animal,以及一些实现它的类.Dog,Cat.

如果您不知道用户在运行时要生成什么,则无法创建Dog指针.它根本行不通!

但你可以做的是将它移植到一个单独的类中,并在运行时将鉴别器传递给工厂类.然后该类将返回该对象.例如:

public Animal getInstance(String discriminator)
{
    if(discriminator.equals("Dog")) {
         return new Dog();
    }
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

调用类只使用:

String type = "Dog";
Animal value = Factory.getInstance(type);
Run Code Online (Sandbox Code Playgroud)

这使得代码具有极高的可读性,将决策逻辑与对值执行的逻辑分离,并通过一些通用接口将类分离.总而言之,漂亮的模式!