个人博客
http://www.milovetingting.cn
抽象工厂模式
模式介绍
抽象工厂模式,也是创建型设计模式之一。
模式的定义
为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定它们的具体类。
使用场景
一个对象族有相同的约束时可以使用抽象工厂模式。如,Android,ios都有短信软件和拨号软件,两者都属于软件的范畴,但它们所在的操作系统平台不一样,这时可以使用抽象工厂模式来实现。
简单实现
抽象产品类
1 2 3 4 5 6 7 8 9 10 11
   | public abstract class AbstractProductA {
  	public abstract void method();
  }
  public abstract class AbstractProductB { 	 	public abstract void method();
  }
  | 
 
抽象工厂类
1 2 3 4 5 6 7
   | public abstract class AbstractFactory { 	 	public abstract AbstractProductA createProductA(); 	 	public abstract AbstractProductB createProductB();
  }
  | 
 
具体产品类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
   | public class ProductA1 extends AbstractProductA{
  	@Override 	public void method() { 		 	}
  }
  public class ProductA2 extends AbstractProductA{
  	@Override 	public void method() { 		 	}
  }
  public class ProductB1 extends AbstractProductB{
  	@Override 	public void method() { 		 	}
  }
  public class ProductB2 extends AbstractProductB {
  	@Override 	public void method() {
  	}
  }
  | 
 
具体工厂类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   | public class Factory1 extends AbstractFactory{
  	@Override 	public AbstractProductA createProductA() { 		return new ProductA1(); 	}
  	@Override 	public AbstractProductB createProductB() { 		return new ProductB1(); 	}
  }
  public class Factory2 extends AbstractFactory {
  	@Override 	public AbstractProductA createProductA() { 		return new ProductA2(); 	}
  	@Override 	public AbstractProductB createProductB() { 		return new ProductB2(); 	}
  }
  | 
 
小结
抽象工厂模式优点:
分离接口与实现
抽象工厂模式缺点:
一是类文件的爆炸性增加,二是不太容易扩展新的产品类,因为每增加一个产品类就需要修改抽象工厂。