哪位大神推荐一下好网站注册城乡规划师好考吗
抽象工厂模式(Abstract Factory)
上文我们说到了工厂模式,工厂模式有一个缺点:类的创建依赖工厂类,如果我们想要拓展程序,就需要对工厂类进行修改,这样做违背了闭包的原则。所以就有了抽象工厂模式:创建多个工厂类,需要拓展程序的时候,直接增加新的工厂类即可。
我们还上文的例子说明理解:
//抽象工厂模式interface Eat {//创建共同接口void eat();}class EatRice implements Eat { //吃米饭 实现类@Overridepublic void eat() {System.out.println("EatRice!");}}class EatNoodles implements Eat { //吃面条 实现类@Overridepublic void eat() {System.out.println("EatNoodles!");}}interface Provider {Eat produce();}class EatRiceFactory implements Provider {//吃米饭工厂类@Overridepublic Eat produce() {return new EatRice();//实例化}}class EatNoodlesFactory implements Provider {//吃面条工厂类@Overridepublic Eat produce() {return new EatNoodles();//实例化}}public class Main {//测试类public static void main(String[] args) {Provider provider=new EatRiceFactory();Eat eatrice=provider.produce();eatrice.eat();}}输出:EatRice!
我们使用抽象工厂模式,我们只需要创建工厂类实现Provider接口,这样即使增加一个功能,我们也只需要在创建一个工厂类实现Provider接口即可,在不需要修改现成代码的同时也有好的拓展性。