java 设计模式_创建型_3抽象工厂模式

三、抽象工厂模式

在抽象工厂模式中,抽象产品 (AbstractProduct) 可能是一个或多个,从而构成一个或多个产品族(Product Family)。在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。

在这里插入图片描述
编码实现
1.抽象工厂 用来说明此工厂可以生产哪些抽象类型产品

public interface AbstractFactory {
    Vehicle createVehicle();
    Food createFood();
    Weapon createWeapon();
}

2.具体工厂 每个抽象类型的产品又可以生产哪种具体类型

public class DefaultFactory implements AbstractFactory {


    @Override
    public Vehicle createVehicle() {
        return new Car();
    }


    @Override
    public Food createFood() {
        return new Apple();
    }


    @Override
    public Weapon createWeapon() {
        return new Sword();
    }
}

3.抽象类

public abstract class Food {
    abstract public void eat();
}


public abstract class Vehicle {
    abstract public void run();
}


public abstract class Weapon {
    abstract public void hit();
}

4.具体类

public class Apple extends Food {


    @Override
    public void eat() {
        System.out.println("苹果成熟了可以吃");
    }
}


public class Car extends Vehicle {
    @Override
    public void run(){
        System.out.println("汽车开动了");
    }
}


public class Sword extends Weapon {
    @Override
    public void hit() {
        System.out.println("剑是近战攻击方式");
    }
}

5.测试

public class AbsFectoryTest {
    public static void main(String[] args) {
        AbstractFactory abstractFactory = new DefaultFactory();
        Food food = abstractFactory.createFood();
        food.eat();
        Vehicle vehicle = abstractFactory.createVehicle();
        vehicle.run();
        Weapon weapon = abstractFactory.createWeapon();
        weapon.hit();


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值