工厂方法模式是设计模式中创建型模式的一种
它在简单工厂的基础之上优化了代码的维护问题
定义抽象工厂类定义创建对象的接口
而具体的创建工作由继承抽象工厂的具体类实现

优点与缺点

优点:
    客户端不需要负责对象的创建,从而明确了各个类的职责
    如果有新对象添加只需要添加一个具体类与具体工厂类即可
    不影响已有代码,后期容易维护,增强了代码的扩展性
缺点:
    需要编写额外代码,增加了工作量

案例

简单案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public interface Factory {
public abstract Animal create();
}
public class CatFactory implements Factory {
@Override
public Animal create() {return new Dog();}
}
public class DogFactory implements Factory{
@Override
public Animal create() {return new Cat();}
}
public abstract class Animal implements Cloneable {
public abstract void function();
}
public class Cat extends Animal {
@Override
public void function() {
System.out.println("喵喵~");
}
}
public class Dog extends Animal {
@Override
public void function() {
System.out.println("汪汪!");
}
}
public static void main(String[] args) throws CloneNotSupportedException {
Factory factory = new CatFactory();
Animal cat = factory.create();
cat.function();
factory = new DogFactory();
Animal dog = factory.create();
dog.function();
}
第一,类的职责更明确
从以上代码可以看出来了,如果你要添加一个新的类型的对象
那么只需要对应的添加一个新的工厂类,便于维护
但是代码量以及文件数量也是会增大的