抽象工厂模式解释: (此段模式分析有参考其他博文 因为已忘出去,故而没有标出链接地址)
抽象工厂模式(Abstact Factory Pattern)是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。
抽象工厂中方法对应产品结构,具体工厂对应产品族
英文定义为:Provide an interface forcreating families of related or dependent objects without specifying theirconcrete classes.
抽象工厂模式的UML图:
抽象工厂模式模式中包含的角色及其相应的职责如下:
抽象工厂(Creator)角色:抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
具体工厂(Concrete Creator)角色: 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
抽象(Product)产品角色:抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色:抽象模式所创建的具体实例对象。
代码实现:
public interface Product {
void show();
}
public class ProductA implements Product {
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("ProductA");
}
}
public class ProductB implements Product {
@Override
public void show() {
System.out.println("ProductB");
}
}
public interface Factory {
Product createProduct();
}
public class FactoryA implements Factory{
@Override
public Product createProduct() {
return new ProductA();
}
}
public class FactoryB implements Factory{
@Override
public Product createProduct() {
return new ProductB();
}
}
测试代码:
public class FactoryTest {
@Test
public void testCreateProduct() {
Product product;
Factory factory;
factory=new FactoryA();
product=factory.createProduct();
product.show();
factory=new FactoryB();
product=factory.createProduct();
product.show();
}
}