工厂方法模式是设计模式中创建型模式的一种
它在简单工厂的基础之上优化了代码的维护问题
定义抽象工厂类定义创建对象的接口
而具体的创建工作由继承抽象工厂的具体类实现
优点与缺点
优点:
客户端不需要负责对象的创建,从而明确了各个类的职责
如果有新对象添加只需要添加一个具体类与具体工厂类即可
不影响已有代码,后期容易维护,增强了代码的扩展性
缺点:
需要编写额外代码,增加了工作量
案例
简单案例
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(); }
|
第一,类的职责更明确
从以上代码可以看出来了,如果你要添加一个新的类型的对象
那么只需要对应的添加一个新的工厂类,便于维护
但是代码量以及文件数量也是会增大的