简单工厂
public interface Bean{}class A implements Bean{}class B implements Bean{}public class BeanFactory {public static Bean createBean(String name) {if ("a".equals(name.toLowerCase())) {return new A();}if ("b".equals(name.toLowerCase())) {return new B();}}}
工厂方法
可以看到简单工厂不符合开闭原则,当要添加一个C类时,需要修改BeanFactory
public interface Bean{}class A implements Bean{}class B implements Bean{}public interface IBeanFactory {Bean createBean();}public class ABeanFactory implements IBeanFactory {@Overridepublic Bean createBean() {return new A();}}public class BBeanFactory implements IBeanFactory {...}
相较于简单工厂,工厂方法更符合开闭原则,如果需要添加C工厂,只需实现IBeanFactory即可。
但是当你使用起来的时候:
IBeanFactory beanFactory = null;if (需要ABean的判断) {beanFactory = new ABeanFactory();} else if (需要BBean的判断) {beanFactory = new BBeanFactory();}

