创建模式之简单工厂模式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实现代码:

public class MainClass {
	public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
//		//实例化一个Apple
//		Apple apple = new Apple();
//		//实例化一个Banana
//		Banana banana = new Banana();
//		
//		apple.get();
//		banana.get();
		
//		//实例化一个Apple,用到了多态
//		Fruit apple = new Apple();
//		Fruit banana = new Banana();
//		apple.get();
//		banana.get();
		
//		//实例化一个Apple
//		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();
		
	}
}


public class Apple implements Fruit{
	/*
	 * 采集
	 */
	public void get(){
		System.out.println("采集苹果");
	}
}



public class Banana implements Fruit{
	/*
	 * 采集
	 */
	public void get(){
		System.out.println("采集香蕉");
	}
}



public interface Fruit {
	/*
	 * 采集
	 */
	public void get();
}



public class FruitFactory {
//	/*
//	 * 获得Apple类的实例
//	 */
//	public static  Fruit getApple() {
//		return new Apple();
//	}
//	
//	/*
//	 * 获得Banana类实例
//	 */
//	public static Fruit getBanana() {
//		return new Banana();
//	}
	/*
	 * get方法,获得所有产品对象
	 */
	public static Fruit getFruit(String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
//		if(type.equalsIgnoreCase("apple")) {
//			return Apple.class.newInstance();
//			
//		} else if(type.equalsIgnoreCase("banana")) {
//			return Banana.class.newInstance();
//		} else {
//			System.out.println("找不到相应的实例化类");
//			return null;
//		}
			Class fruit = Class.forName(type);
			return (Fruit) fruit.newInstance();
		
		
	}
}

  

 

https://www.bilibili.com/video/BV1wz411q7eQ

posted @ 2020-03-28 14:54  年轻无极限zx  阅读(213)  评论(0)    收藏  举报