工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码
动物的抽象接口
public interface Animal { void run(); }
鸟实现动物的跑方法
public class Bird implements Animal { public void run() { System.out.println("飞着跑"); } }
虫子实现动物的跑方法
public class Worm implements Animal { public void run() { System.out.println("趴着跑"); } }
生成动物的工厂的接口
public interface AnimalFactory { Animal createAnimal(); }
生产鸟的工厂
public class BirdFactory implements AnimalFactory { @Override public Animal createAnimal() { return new Bird(); } }
生产虫子的工厂
public class WormFactory implements AnimalFactory { @Override public Animal createAnimal() { return new Worm(); } }
利用工厂生产动物
public class Demo { public static void main(String[] args) { AnimalFactory factory=new BirdFactory(); Animal animal = factory.createAnimal(); animal.run(); } }