抽象工厂【创建者模型】

目录

1.特点

2.模式与结构

2.1.模式

2.2.结构图

3.实现

3.1.动物类抽象

3.2.动物类实现类

3.3.植物类抽象类

3.4.植物类实现类

3.5.农场类抽象类

3.6.农场类实现类

4.应用场景


1.特点

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

2.模式与结构

2.1.模式

抽象工厂模式的主要角色如下
抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。
具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。
抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。
具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间是多对一的关系。

2.2.结构图

3.实现

3.1.动物类抽象

//抽象产品:动物类
interface Animal { public void show(); }

3.2.动物类实现类

//具体产品:马类
class Horse implements Animal {...}
​//具体产品:牛类
class Cattle implements Animal {...}

3.3.植物类抽象类

//抽象产品:植物类
interface Plant {public void show();}

3.4.植物类实现类

//具体产品:水果类
class Fruitage implements Plant {...}
​//具体产品:蔬菜类
class Vegetables implements Plant {...}

3.5.农场类抽象类

//抽象工厂:农场类
​interface Farm {
    public Animal newAnimal();
    public Plant newPlant();
}

3.6.农场类实现类

//具体工厂:韶关农场类
​class SGfarm implements Farm {
​public Animal newAnimal() {
​        System.out.println("新牛出生!");
​         return new Cattle();
​}
​public Plant newPlant() {
​        System.out.println("蔬菜长成!");
​        return new Vegetables();
​}}
​//具体工厂:上饶农场类
​class SRfarm implements Farm {public Animal newAnimal() {
​        System.out.println("新马出生!");
        return new Horse();}public Plant newPlant() {
​        System.out.println("水果长成!");
        return new Fruitage();
​}}

4.应用场景

抽象工厂模式通常适用于以下场景:
当需要创建的对象是一系列相互关联或相互依赖的产品族时,如电器工厂中的电视机、洗衣机、空调等。
系统中有多个产品族,但每次只使用其中的某一族产品。如有人只喜欢穿某一个品牌的衣服和鞋。
系统中提供了产品的类库,且所有产品的接口相同,客户端不依赖产品实例的创建细节和内部结构。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值