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

三、抽象工厂模式

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

java 设计模式_创建型_3抽象工厂模式_第1张图片
编码实现
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();


    }
}

你可能感兴趣的:(设计模式,抽象工厂模式,java)