1.创建一个工厂的接口
package com.klose.工厂方法模式;
import com.klose.简单工厂.Animal;
public interface AnimalFactory {
Animal createAnimal();
}
2.实现这个接口,实现创建实例的方法
package com.klose.工厂方法模式;
import com.klose.简单工厂.Animal;
import com.klose.简单工厂.Cat;
public class CatFactory implements AnimalFactory {
@Override
public Animal createAnimal() {
return new Cat();
}
}
package com.klose.工厂方法模式;
import com.klose.简单工厂.Animal;
import com.klose.简单工厂.Dog;
public class DogFactory implements AnimalFactory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
3.测试一下
public class Test {
public static void main(String[] args) {
DogFactory dogFactory = new DogFactory();
Animal dog = dogFactory.createAnimal();
dog.eat();
CatFactory catFactory = new CatFactory();
Animal cat = catFactory.createAnimal();
cat.eat();
}
}
4.概述
工厂接口类负责定义创建对象的接口,具体对象的创建有继承工厂类的具体类实现(factoryBean)
优点:客户端不再负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体工厂类即可,不影响已有代码,增强扩展性,利于维护;
缺点:增加了代码量,显得啰嗦。