FashionNote 2018-04-05
标签(空格分隔):设计模式
简单工厂模式属于类的创建性模式,又叫作静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
interface Fruit{ /** * 采摘水果方法 */ void get(); } ---------- class Apple implements Fruit{ public void get() { System.out.println("采摘苹果"); } } class Banana implements Fruit{ public void get() { System.out.println("采摘香蕉"); } } ---------- class FruitFactory{ // 第一种 // public static Fruit getApple() { // return new Apple(); // } // // public static Fruit getBanana(){ // return new Banana(); // } // 第二种 // public static Fruit getFruit(String type){ // if(type.equalsIgnoreCase("apple")){ // return new Apple(); // }else if(type.equalsIgnoreCase("banana")){ // return new Banana(); // }else { // System.out.println("类型错误"); // return null; // } // } // 第三种 public static Fruit getFruit(String type) throws Exception { Class clazz = Class.forName(type); return (Fruit)clazz.newInstance(); } } ---------- public class MainClass { public static void main(String [] args){ // 没有工厂时 // Apple apple = new Apple(); // Banana banana = new Banana(); // apple.get(); // banana.get(); // 没有工厂时 // Fruit apple = new Apple(); // Fruit banana = new Apple(); // apple.get(); // banana.get(); // 存在工厂,利用第一种工厂方法创建 // Fruit apple = FruitFactory.getApple(); // Fruit banana = FruitFactory.getBanana(); // apple.get(); // banana.get(); // 存在工厂,利用第二种工厂方法创建 // Fruit apple = FruitFactory.getFruit("apple"); // Fruit banana = FruitFactory.getFruit("banana"); // apple.get(); // banana.get(); // 存在工厂,利用第三种工厂方法创建 try { Fruit banana = FruitFactory.getFruit("com.wkh.Banana"); Fruit apple = FruitFactory.getFruit("com.wkh.Apple"); apple.get(); banana.get(); } catch (Exception e) { e.printStackTrace(); } } }