工厂模式3

什么是抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时使用的一种工厂模式,抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换句话说,也就是这些抽象产品的具体子类的实例,工厂类负责创建抽象产品的具体子类的实例。

抽象工厂模式的设计类如图所示

在这里插入图片描述
AbstractProductA和AbstractProductB代表一个产品家族,实现这些接口的类代表具体的产品。AbstractFactory为创建产品的接口,能够创建这个产品家族中的所有类型的产品,它的子类可以根据具体情况创建对应的产品。

抽象工厂模式代码描述
  1. 创建Fruit接口、Apple抽象类、ChinaApple类等
    Fruit(interface):
public interface Fruit {
    public void get();
}

Apple抽象类:

public abstract class Apple implements Fruit{
    public abstract void get();
}

ChinaApple类:

public class ChinaApple extends Apple {

    @Override
    public void get() {
        System.out.println("中国的苹果...");
    }
}
  1. 创建抽象工厂、具体工厂
    抽象工厂:
public interface FruitFactory {
    //实例化苹果
    public Fruit getApple();
    //实例化香蕉
    public Fruit getBanana();
}

具体工厂:

public class ChinaFactory implements FruitFactory {

    @Override
    public Fruit getApple() {
        return new ChinaApple();
    }
    
    @Override
    public Fruit getBanana() {
        return new ChinaBanana();
    }
}
  1. 生产水果
public class MainClass {

    public static void main(String[] args){
        //创建中国工厂
        FruitFactory chinaFactory = new ChinaFactory();
        //通过中国工厂生产中国苹果实例
        Fruit apple = chinaFactory.getApple();
        apple.get();
        //通过中国工厂生产中国香蕉实例
        Fruit banana = chinaFactory.getBanana();
        banana.get();        
        
        //创建英国工厂
        FruitFactory englandFactory = new EnglandFactory();
        //通过英国工厂生产英国苹果实例
        Fruit apple1 = englandFactory.getApple();
        apple1.get();
        //通过英国工厂生产英国香蕉实例
        Fruit banana2 = englandFactory.getBanana();
        banana2.get();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值