设计模式——抽象工厂

1. 简介

  抽象工厂是一种创建型模式,它提代一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂允许调用者使用抽象的接口创建一组相关的产口,而不需要关心它们具体的产品,这样就从具体的产口中解耦出来,依赖抽象而不是依赖具体类。

2. UML类图

《设计模式——抽象工厂》

  AbstractFactory是声明了创建抽象产品的抽象工厂,ConcreteFactory是具体的工厂,实现了创建具体产品。AbstractProduct是一类产品的抽象接口,Product是具体的产品。

3. 实例

抽象产品A

public interface AbstractProductA {
    void showProductA();
}

具体产品A

public class ProductA1 implements AbstractProductA {
    public void showProductA() {
        System.out.println("ProductA1");
    }
}

public class ProductA2 implements AbstractProductB {
    public void showProductA() {
        System.out.println("ProductA2");
    }
}

抽象产品B

public interface AbstractProductB {
    void showProductB();
}

具体产品B

public class ProductB1 implements AbstractProductB {
    public void showProductB() {
        System.out.println("ProductB1");
    }
}

public class ProductB2 implements AbstractProductB {
    public void showProductB() {
        System.out.println("ProductB2");
    }
}

抽象工厂

public interface AbstractFactory {
    AbstractProductA createProductA();
    AbstractProductB createProductB();
}

具体工厂

public class Factory1 implements AbstractFactory {
    public AbstractProductA createProductA() {
        return new ProductA1();
    }
    
    public AbstractProductB createProductB() {
        return new ProductB1();
    }
}

public class Factory2 implements AbstractFactory {
    public AbstractProductA createProductA() {
        return new ProductA2();
    }
    
    public AbstractProductB createProductB() {
        return new ProductB2();
    }
}

测试

public class Test {
    public static void main(String[] args) {
        AbstractFactory factory = new Factory1();
        AbstractProductA productA = factory.createProductA();
        productA.showProductA();
        
        AbstractProductB productB = factory.createProductB();
        productB.showProductB();
    }
}
    原文作者:设计模式
    原文地址: https://segmentfault.com/a/1190000015769172
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞