Java设计模式--抽象工厂

  一个基础接口定义了功能,每个实现接口的子类就是产品,然后定义一个工厂接口,实现了工厂接口的就是工厂,这时候,接口编程的优点就出现了,我们可以新增产品类(只需要实现产品接口),只需要同时新增一个工厂类,客户端就可以轻松调用新产品的代码。

  抽象工厂的灵活性就体现在这里,无需改动原有的代码,毕竟对于客户端来说,静态工厂模式在不改动StaticFactory类的代码时无法新增产品,如果采用了抽象工厂模式,就可以轻松的新增拓展类。

/**
 * 食物方法接口
 *
 */
public interface Food {

}

/**
 * 生产方法
 *
 */
public interface Produce {
    Food get();
}


/**
 * 食物A
 *
 */
class A implements Food {
    
}

/**
 * 食物B
 *
 */
class B implements Food {
    
}

/**
 * 食物A生产工厂
 *
 */
class FactoryForA implements Produce {

    @Override
    public Food get() {
        return new A();
    }
    
}

/**
 * 食物B生产工厂
 *
 */
class FactoryForB implements Produce {

    @Override
    public Food get() {
        return new B();
    }
    
}

/**
 * 抽象工厂
 * @author 尘世间迷茫的小书童
 *
 */
public class AbstractFactory {
    public static void main(String[] args) {
        Food a = new FactoryForA().get();
        a = new FactoryForB().get();
    }
}
原文地址:https://www.cnblogs.com/mxh-java/p/11182961.html