java工厂模式demo
package object; /** * @author dayu * @date 2019/03/05 * @Describe 通过反射类改进工厂的设计模式可以最大的改进子类的操作,通过new造成耦合问题 ...工厂类使用泛型可以变成高可用的状态 */ public class FactoryDemo { public static void main(String[] args) { // IFruit fruit = new Orange(); IFruit fruit = Factory.getInstance("object.Banana"); fruit.eat(); IMessage msg = Factory.getInstance("object.Msgs"); msg.print(); } } interface IFruit { void eat(); } interface IMessage { void print(); } class Msgs implements IMessage { @Override public void print() { System.out.println("Msgs.print()"); } } class Orange implements IFruit { @Override public void eat() { System.out.println(this.getClass().getName() + " 吃橘子"); } } class Apple implements IFruit { @Override public void eat() { System.out.println(this.getClass().getName() + " 吃苹果"); } } class Banana implements IFruit { @Override public void eat() { System.out.println(this.getClass().getName() + " 吃香蕉"); } } /** * 工厂类使用泛型可以变成高可用的状态 */ class Factory { private Factory() {} @SuppressWarnings("unchecked") public static <T> T getInstance(String className) { T obj = null; try { obj = (T)Class.forName(className).newInstance(); } catch (Exception e) { e.printStackTrace(); } return obj; } }