简介:抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式
特点:同一产品簇下的产品用同一工厂,如:机枪和机枪子弹属于同一产品簇,手枪和手枪子弹属于同一产品簇。
public interface Gift {
//声明产品赠品的接口,当然也可以是抽象类,同样为了简单就不声明方法了
}
public class GiftA implements Gift {
public GiftA() {
System.out.println("GiftA");
}
}
public class GiftB implements Gift {
public GiftB(){
System.out.println("GiftB");
}
}
public interface Factory {
public Product createProduct();
public Gift createGift();
}
public class FactoryA implements Factory {
@Override
public Product createProduct() {
return new ProductA();
}
@Override
public Gift createGift() {
return new GiftA();
}
}
public class FactoryB implements Factory {
@Override
public Product createProduct() {
return new ProductB();
}
@Override
public Gift createGift() {
return new GiftB();
}
}
public class Client {
public static void main(String[] args) {
Factory factory;
factory = new FactoryA();
factory.createProduct();
factory.createGift();
factory = new FactoryB();
factory.createProduct();
factory.createGift();
}
}
实际应用:Spring中最为重要的组件就是IOC,而IOC中非常重要的部分就是应用了工厂模式的代码。而工厂模式依赖于Java的反射机制。工厂模式在spring 中的体现Spring Bean 的创建是典型的工厂模式, 这一系列的 Bean 工厂, 也即 IOC 容器为开发者管理对象间的依赖关系提供了很多便利和基础服务