FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
package com.modes;
/*
* 工厂方法模式(Factory Method)
*/
public class TestFactoryMethod {
public static void main(String[] args) {
AnimalFactory dogFactory = new DogFactory();
Animal a = dogFactory.getAnimal();
System.out.println(a);
}
}
abstract class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
abstract class AnimalFactory {
public abstract Animal getAnimal();
}
class DogFactory extends AnimalFactory {
@Override
public Animal getAnimal() {
// TODO Auto-generated method stub
System.out.println("Wong");
return new Dog();
}
}
class CatFactory extends AnimalFactory {
@Override
public Animal getAnimal() {
// TODO Auto-generated method stub
System.out.println("Miao");
return new Cat();
}
}