符合开闭原则,单一职责原则。
/** * 抽象工厂模式 */ public class FactoryMethod { public static void main(String[] args) { Application application = new ConcreteProductA(); // Application application = new ConcreteProductA1(); Product product = application.getObject(); product.method1(); } } /** * 定义产品的接口 * */ interface Product{ public void method1(); } class productA implements Product{ @Override public void method1() { System.out.println("productA.method1 excute"); } } class productA1 implements Product{ @Override public void method1() { System.out.println("productA1.method1 excute"); } } /** * 对扩展开放,对修改关闭。 * 抽象方法,定义公共稳定的逻辑 * */ abstract class Application{ //抽象,由具体类实现 abstract Product createProduct(); //获取bean Product getObject(){ Product product = createProduct(); // .... return product; } } //具体实现类A class ConcreteProductA extends Application{ @Override Product createProduct() { //.. return new productA(); } } //具体实现类A1 class ConcreteProductA1 extends Application{ @Override Product createProduct() { //.. return new productA1(); } }