Appearance

抽象工厂

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();
    }
}
Last Updated 2023/10/18 09:59:31