简单工厂模式的核心是一个工厂方法,但在工厂方法里还需要if,switch来判断生成哪个对象,破坏了开闭原则.
Base base = factor.Create("A");
Base base = factor.Create("B");
工厂模式,抽象出一个抽象工厂类,把创建对象的方法放到工厂的子类里,由客户来选择哪家工厂来生成对象,需要增加对象时,只需要增加一个工厂子类就行,符合开闭原则.
Base base = factorA.Create();
Base base = factorB.Create();
但是,由客户来选择工厂来生成对象,和原来直接new一个对象有什么好处呢?
Base base = new A();
Base base = new B();
如果我把new A();和new A();配置到文件里,再通过反射等技术,生成所需要的对象,也没必要再加一层子工厂类啊?