23种设计模式学习之抽象工厂模式

工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码

动物的抽象接口

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();
    }
}

 

posted @ 2018-01-06 16:01  我_会飞的鱼  阅读(132)  评论(0编辑  收藏  举报