设计模式(3、抽象工厂)

抽象工厂:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。

抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。

UML类图:

代码实现:

/**
 * @Author: ltx
 * @Description:
 * 抽象工厂:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。
 * 抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。
 */

//抽象产品A:提供了产品的接口
interface A {
    void action();
}

//具体产品A1:实现抽象产品中的抽象方法
class A1 implements A {
    @Override
    public void action() {
        System.out.println("this is A1");
    }
}

//具体产品A2:实现抽象产品中的抽象方法
class A2 implements A {
    @Override
    public void action() {
        System.out.println("this is A2");
    }
}

//抽象产品B:提供了产品的接口
interface B {
    void action();
}

//具体产品B1:实现抽象产品中的抽象方法
class B1 implements B {
    @Override
    public void action() {
        System.out.println("this is B1");
    }
}

//具体产品B2:实现抽象产品中的抽象方法
class B2 implements B {
    @Override
    public void action() {
        System.out.println("this is B2");
    }
}

//抽象工厂F:提供了产品的生成方法
interface F {
    A createA();

    B createB();
}

//具体工厂F1:实现了产品的生成方法
class F1 implements F {
    @Override
    public A createA() {
        return new A1();
    }

    @Override
    public B createB() {
        return new B1();
    }
}

//具体工厂F2:实现了产品的生成方法
class F2 implements F {
    @Override
    public A createA() {
        return new A2();
    }

    @Override
    public B createB() {
        return new B2();
    }
}

public class AbstractFactory {
    public static void main(String[] args) {
        System.out.println("-------抽象工厂-------");
        //工厂F1
        F f1 = new F1();
        //生产A1
        A a1 = f1.createA();
        //生产B1
        B b1 = f1.createB();
        a1.action();
        b1.action();
        //工厂F2
        F f2 = new F2();
        //生产A2
        A a2 = f2.createA();
        //生产B1
        B b2 = f2.createB();
        a2.action();
        b2.action();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小绿豆

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值