抽象工厂模式:提供一个为创建相互相关或相互依赖的对象接口;
类型:创建对象类型;
工厂方法模式和抽象工厂模式的区别:工厂方法模式提供一个创建一个对象的接口,而抽象工厂模式提供一个创建相关和依赖的对象接口,也就是说工厂方法模式提供的方法是创建一个产品对象,而抽象工厂提供了创建多个产品对象的接口;他们的出发点都是一样,降低客户端与产品类的耦合度,客户端只需要与抽象接口通信,而无需显示引用产品类;
抽象工厂模式的组成:
1)、抽象工厂接口AbstractFactory:提供创建多个相关或依赖产品对象的接口;
2)、抽象工厂实现类:具体实现抽象工厂中的方法;
3)、产品接口:为一类产品提供接口;
4)、产品实现类:产品接口具体实现;
/*抽象工厂接口*/
public interface Factory{
public Product1 product1();
public Product2 product2();
}
/*抽象工厂接口实现*/
public class FactoryImp implement Factory{
private Product1 product1;
private Product2 product2;
public Product1 product1(){
return new Product1Imp();
}
public Product2 product2(){
return new Product2Imp();
}
}
/*产品1接口*/
public interface Product1{
public void pro1();
}
/*产品1接口实现*/
public class Product1Imp implements Product1{
public void pro1(){};
}
/*产品2接口*/
public interface Product2{
public void pro2();
}
/*产品2接口实现*/
public class Product2Imp implements Product2{
public void pro2(){};
}
/*客户端,抽象工厂模式使客户端通过抽象接口引用不同的产品实例,从而实现了二者的解耦*/
public class Client{
public static void main(String[]args){
Factory factory = new FactoryImp();
factory.product1().pro1();
factory.product2().pro2();
}
}