美文网首页
Java设计模式--抽象工厂模式

Java设计模式--抽象工厂模式

作者: 留给时光吧 | 来源:发表于2018-04-11 21:50 被阅读0次

简单来说,抽象工厂就是提供一个产生工厂的结构,具体产生的实例则由所生成的工厂来决定。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结构。

一般包含以下4部分:

  • 1 抽象工厂:工厂方法模式的核心,它是与具体逻辑无关。
  • 2 具体工厂:实际负责各种实例的产生
  • 3 抽象产品:同一类产品的抽象接口
  • 4 具体产品:真正各种产品的实例

1.创建产品接口

public interface AbstractProductA {
    void fun();
}

public interface AbstractProductB {
    void fun();
}

2.创建具体产品

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

public class ProductA2 implements AbstractProductA{
    @Override
    public void fun() {
        System.out.println("ProductA2 fun()");
    }
}

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

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

3.创建工厂接口

interface AbstractFactory {
    AbstractProductA createProductA();

    AbstractProductB createProductB();
}

4.创建实际工厂

public class Factory1 implements AbstractFactory{
    @Override
    public AbstractProductA createProductA() {
        return new ProductA1();
    }

    @Override
    public AbstractProductB createProductB() {
        return new ProductB1();
    }
}

public class Factory2 implements AbstractFactory{
    @Override
    public AbstractProductA createProductA() {
        return new ProductA2();
    }

    @Override
    public AbstractProductB createProductB() {
        return new ProductB2();
    }
}

5.工厂管理类

public class FactoryCreater {
    public static AbstractFactory getFactory(String type){
        switch (type){
            case "1":
                return new Factory1();
            case "2":
                return new Factory2();
            default:
                return null;
        }
    }
}

6.测试类

public class test {
    public static void main(String[] args) {
        AbstractFactory factory = FactoryCreater.getFactory("1");
        factory.createProductA().fun();
    }
}

相关文章

  • Java设计模式教程

    Java设计模式教程 Java工厂设计模式 Java抽象工厂模式 Java单例模式 Java建造者(Builder...

  • 设计模式系列-抽象工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 抽象工厂模式 抽象工厂模式 定义 抽象工...

  • 代码段简单学习设计模式 -- 抽象工厂模式

    《JAVA与模式》之抽象工厂模式 大话设计模式 抽象工厂模式(Abstraci Factory): 提供一个创...

  • Java设计模式系列-抽象工厂模式

    原创文章,转载请标注出处:《Java设计模式系列-抽象工厂模式》 一、概述 抽象工厂模式是对工厂方法模式的再升级,...

  • 设计模式——工厂模式和抽象工厂模式

    Java设计模式——工厂模式 工厂模式和抽象工厂模式都属于创建型模式。 创建型模式这些设计模式提供了一种在创建对象...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • Java与模式

    《JAVA与模式》之简单工厂模式《JAVA与模式》之工厂方法模式《JAVA与模式》之抽象工厂模式

  • 总览

    1 书籍推荐 《Java设计模式》 2 分类 创建型模式 工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模...

网友评论

      本文标题:Java设计模式--抽象工厂模式

      本文链接:https://www.haomeiwen.com/subject/luazhftx.html