SimpleFactory设计模式

  简单工厂模式属于类的创建型模式,又叫静态工厂方法模式,通过定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
  工厂角色:它负责实现创建所有实例的内部逻辑,可以直接被外界调用创建所需产品对象
  抽象角色:所有对象的父类,它负责描述所有实例所共有的公共接口。
  具体产品:具体的实例对象。
  缺点就体现在其工厂类上,由于工厂类集中了所有实例的逻辑创建,所有高内聚方面做的并不好,另外当系统中的具体产品类不断增加时,可
  能会要求工厂类也要做相应的修改,扩展性并不好
//创建Apple实例类
public class Apple implements Fruit{
	/*
	 * 采集
	 */
	public void get(){
		System.out.println("采集苹果");
	}
}

//创建Banana实例类
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 {
	//第二种方式:通过传入的type进行判断,如果存在就返//回相应实例,如果没有就说明不存在该类,返回null;
//		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();
三种方式相比较而言,第一种简单粗暴,第二种可以看到具体的实例,第三种扩展性很好,但是不够直观。业界公认第二种方式更好
		
	}
}
发布了25 篇原创文章 · 获赞 4 · 访问量 729

猜你喜欢

转载自blog.csdn.net/qq_43149023/article/details/91424944