介绍
GoF 23种设计模式之一。
定义
定义一个用于创建对象的接口(或类),让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
举例
动物类
public abstract class Animal {
public abstract void eat();
}
猫类
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
狗类
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗啃骨头");
}
}
动物工厂
public class AnimalFactory {
public abstract Animal createAnimal();
}
猫工厂
public class CatFactory implements Factory {
@Override
public Animal createAnimal() {
return new Cat();
}
}
狗工厂
public class DogFactory implements Factory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
测试
public class AnimalDemo {
public static void main(String[] args) {
Factory f = new DogFactory();
Animal a = f.createAnimal();
a.eat();
System.out.println("--------------");
f = new CatFactory();
a = f.createAnimal();
a.eat();
}
}
执行结果
适用场景
- 参考定义。