抽象工厂模式

文章提供了一个Java代码示例,展示了如何使用抽象工厂模式创建不同类型的动物(如Dog和Cat)和植物(如Tree和Flower)对象。抽象工厂类定义了创建产品对象的接口,而具体工厂类(DogFactory和CatFactory)实现了这些接口,分别返回对应的实例。客户端代码通过工厂类创建对象并调用其方法。
摘要由CSDN通过智能技术生成

// 创建抽象产品类
public abstract class Animal {
    public abstract void speak();
}
public abstract class Plant {
    public abstract void photosynthesis();
}
// 创建具体产品类
public class Dog extends Animal {
    @Override
    public void speak() {
        System.out.println("Dog says: Woof!");
    }
}
public class Cat extends Animal {
    @Override
    public void speak() {
        System.out.println("Cat says: Meow!");
    }
}
public class Tree extends Plant {
    @Override
    public void photosynthesis() {
        System.out.println("Tree is doing photosynthesis.");
    }
}
public class Flower extends Plant {
    @Override
    public void photosynthesis() {
        System.out.println("Flower is doing photosynthesis.");
    }
}
// 创建抽象工厂类
public abstract class AbstractFactory {
    public abstract Animal createAnimal();
    public abstract Plant createPlant();
}
// 创建具体工厂类
public class DogFactory extends AbstractFactory {
    @Override
    public Animal createAnimal() {
        return new Dog();
    }
    @Override
    public Plant createPlant() {
        return new Tree();
    }
}
public class CatFactory extends AbstractFactory {
    @Override
    public Animal createAnimal() {
        return new Cat();
    }
    @Override
    public Plant createPlant() {
        return new Flower();
    }
}
// 客户端代码
public class Main {
    public static void main(String[] args) {
        AbstractFactory dogFactory = new DogFactory();
        Animal dog = dogFactory.createAnimal();
        Plant tree = dogFactory.createPlant();
        dog.speak(); // 输出: Dog says: Woof!
        tree.photosynthesis(); // 输出: Tree is doing photosynthesis.
        AbstractFactory catFactory = new CatFactory();
        Animal cat = catFactory.createAnimal();
        Plant flower = catFactory.createPlant();
        cat.speak(); // 输出: Cat says: Meow!
        flower.photosynthesis(); // 输出: Flower is doing photosynthesis.
    }
}

在上面的示例中,Animal和Plant是抽象产品类,它们都有一个抽象方法。Dog、Cat、Tree和Flower是具体产品类,它们分别实现了Animal和Plant的抽象方法并输出相应的信息。AbstractFactory是一个抽象工厂类,它有两个抽象方法createAnimal()和createPlant(),分别用于创建Animal和Plant对象。DogFactory和CatFactory是具体工厂类,它们实现了AbstractFactory接口并分别创建Dog、Tree和Cat、Flower对象。在客户端代码Main中,我们使用DogFactory和CatFactory分别创建了Dog、Tree和Cat、Flower对象,并调用了它们的方法输出相应的信息。这样我们就使用了抽象工厂模式来创建不同类型的动物和植物对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值