设计模式-工厂方法模式-java-中文版

本文通过游戏中的兵营实例详细解析了工厂方法设计模式。利用不同种族的兵营来创建对应的兵种,如暗夜精灵的弓箭手与利爪德鲁伊,兽族的猎头者与步兵。通过具体代码实现展示了该模式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

码上见分晓!
中文版本的设计模式详解,案例中的代码尽量使用了中文.
以游戏和生活中较好理解的场景讲解设计模式的实际用法,便于理解吸收,让设计模式的学习不再困难!!!

/**
 * 想要哪个种族的近战兵就使用哪个种族的兵营(工厂)
 */
public class 工厂方法模式主程序 {
    public static void main(String[] args) {
        兵营 兵营 = new 暗夜兵营();
        System.out.println("兵种 = " + getName(兵营.创建(兵种类型.近战兵)));
        System.out.println("兵种 = " + getName(兵营.创建(兵种类型.远程兵)));

        兵营 = new 兽族兵营();
        System.out.println("兵种 = " + getName(兵营.创建(兵种类型.近战兵)));
        System.out.println("兵种 = " + getName(兵营.创建(兵种类型.远程兵)));
    }

    private static String getName(Object 对象) {
        return 对象.getClass().getSimpleName();
    }
}

interface 兵营 {
    兵 创建(兵种类型 兵种类型);
}

class 暗夜兵营 implements 兵营 {
    @Override
    public 兵 创建(兵种类型 类型) {
        if (兵种类型.远程兵.equals(类型)) {
            return new 弓箭手();
        } else if (兵种类型.近战兵.equals(类型)) {
            return new 利爪德鲁伊();
        }
        return null;
    }
}

class 兽族兵营 implements 兵营 {
    @Override
    public 兵 创建(兵种类型 类型) {
        if (兵种类型.远程兵.equals(类型)) {
            return new 猎头者();
        } else if (兵种类型.近战兵.equals(类型)) {
            return new 兽族步兵();
        }
        return null;
    }
}

interface{
}

class 弓箭手 implements{
}

class 利爪德鲁伊 implements{
}

class 猎头者 implements{
}

class 兽族步兵 implements{
}

enum 兵种类型 {
    近战兵,
    远程兵
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值