工廠模式:來一個加工一個。
一個實例對象須要建立一個類,並在實現工廠中建立一個對應該類的對象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();