工厂模式:来一个加工一个。
一个实例对象须要建立一个类,并在实现工厂中建立一个对应该类的对象java
//建立一个获取形状类型的对象(根据传值返回不一样的类的对象) public Shape getShape(String shapeType){ if(shapeType == null){ return null; } if(shapeType.equalsIgnoreCase("circle")){ return new Circle(); }else if(shapeType.equalsIgnoreCase("square")){ return new Square(); }else{ return null; } } //改进:利用反射能够去掉对实现工厂的修改,只须要新增类就能够 public static <T> T getClass(Class<? extends T> clazz) { T obj = null; try { obj = (T) Class.forName(clazz.getName()).newInstance(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return obj; } // 调用的时候能够利用多肽去掉类型强制转换 Rectangle rect = ShapeFactory.getClass(Rectangle.class); rect.draw(); Shape square = ShapeFactory.getClass(Square.class); square.draw();