抽象工厂
coderzhouyu
什么是抽象工厂?
抽象工厂简单来说就是工厂的工厂,它可以创建一系列的工厂。
例如:一个汽车工厂可以生产汽车,一个飞机工厂可以生产飞机,一个坦克工厂可以生产坦克,这些工厂都是工厂,它们都可以生产产品,但是它们生产的产品不一样,所以我们可以将这些工厂抽象出来,然后再创建一个工厂,这个工厂可以生产汽车工厂、飞机工厂、坦克工厂等等,这个工厂就是抽象工厂。
抽象工厂的使用场景有哪些
抽象工厂一般很少使用,主要的应用场景是在一些框架中,例如:Spring框架中的BeanFactory,它可以创建一系列的Bean工厂,这些Bean工厂可以创建不同的Bean对象。
另外,抽象工厂也可以用在一些复杂的业务场景中,例如:一个电商平台,它可以生产不同的商品,例如:手机、电脑、衣服等等,这些商品都是不同的,但是它们都是商品,所以我们可以将商品抽象出来,然后再创建一个工厂,这个工厂可以生产手机工厂、电脑工厂、衣服工厂等等,这个工厂就是抽象工厂。
总体来说抽象工厂应该在创建一系列类的时候,需要将这些类的创建过程抽象出来的时候使用。这样做的好处是可以约束一系列类的创建过程,从而使得这些类的创建过程更加统一,更加规范,更加方便管理。
抽象工厂的的实现
public interface Factory {
Product createProduct();
}
public class CarFactory implements Factory {
@Override
public Product createProduct() {
return new Car();
}
}
public class PlaneFactory implements Factory {
@Override
public Product createProduct() {
return new Plane();
}
}
public interface Product {
void show();
}
public class Car implements Product {
@Override
public void show() {
System.out.println("生产了一辆汽车");
}
}
public class Plane implements Product {
@Override
public void show() {
System.out.println("生产了一架飞机");
}
}
public class Test {
public static void main(String[] args) {
Factory factory = new CarFactory();
Product product = factory.createProduct();
product.show();
}
}