优点:
1、分离具体实现,面向接口编程。客户端代码只需访问抽象接口而不需关心具体的实现类,解耦。
2、易于交换产品系列。由于抽象工厂为产品系列提供了统一的抽象层,所以如果想交换产品系列,只需交换相应的具体实现。
3、有利于产品的一致性,这得力于抽象工厂提供的一致抽象。
缺点:
1、难以支持新种类的产品。如果在现有产品系列中添加新的产品,那就要修改现有产品系列的抽象接口,这样必然引起各产品系列具体实现的变化。