1、 概述
工厂方法模式中 抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
2、 优缺点
优点
客户端不需要在负责对象的创建,从而明确了各个类的职责;
如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,
不影响已有的代码,后期维护容易,增强了系统的扩展性
缺点
需要额外的编写代码,增加了工作量
代码:
Animal 动物抽象类
// 动物抽象类 public abstract class Animal { public abstract void eat(); // 吃 的 功能 }
Dog 类
// 狗类 public class Dog extends Animal { @Override public void eat() { System.out.println("笨狗吃骨头..."); } }
Rabbit 类
// 兔类 public class Rabbit extends Animal { @Override public void eat() { System.out.println("兔子爱吃隔壁草..."); } }
Factory 工厂接口 (造动物)
// 工厂接口 public interface Factory { public Animal createAnimal(); // 创造动物的功能 }
DogFactory 狗工厂
// 狗工厂 public class DogFactory implements Factory { @Override public Animal createAnimal() { return new Dog(); } }
RabbitFactory 兔子工厂
// 兔子工厂 public class RabbitFactory implements Factory { @Override public Animal createAnimal() { return new Rabbit(); } }
测试类
public class Test { public static void main(String[] args) { // 需求: 买狗 Factory f = new DogFactory(); Animal a = f.createAnimal(); a.eat(); // 需求:买兔子 f = new RabbitFactory(); a = f.createAnimal(); a.eat(); } }
结果:
笨狗吃骨头...
兔子爱吃隔壁草...