工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂类的具体类实现。
- 优点
- 客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
- 缺点
- 需要额外的编写代码,增加了工作量
举例如下:(举一个创建狗的工厂的例子)
创建抽象父类(动物)
abstract class Animal { public abstract void eat(); }
创建抽象工厂接口
interface AnimalFactory{ public abstract Animal AnimalFactory(); }
创建实现狗
class Dog extends Animal { public void eat(){ System.out.println("狗吃骨头"); } }
创建一个生产狗对象的工厂类
class DogFactory implements AnimalFactory { public Animal createAnimal() { return new Dog(); } }
测试类
class Test { public static void main(String[] args) throws Exception{ AnimalFactory af = new DogFactory();//创建工厂类 Animal a = af.createAnimal();//由工厂类生产相应动物对象 a.eat(); } }
- 输出:狗吃骨头