设计模式-构造器模式-java-中文版

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

https://gitee.com/nightrunner/chinese-version-of-design-patterns

/**
 * 自己来创造英雄!!
 * 用于constructor的"反范式",因为范式型constructor的参数过多,例如本例需要7个参数,后续还有可能增加更多参数,使用构造器这种方式时,后面增加参数只需要增加代码,不需要修改原有代码
 */
public class 构造器模式主程序 {
    public static void main(String[] args) {
        角色 角色 = new 角色.构造器(职业.亚马逊, "射射射")
                .设置发型(发型.长马尾)
                .设置发色(发色.红色)
                .设置武器(武器.)
                .设置副手(副手.箭袋)
                .设置装甲(装甲.轻甲).构建();
        System.out.println("角色 = " + 角色);
    }
}

class 角色 {
    private 职业 职业;
    private 发型 发型;
    private 发色 发色;
    private 武器 武器;
    private 装甲 装甲;
    private 副手 副手;
    private String 角色名称;

    public 角色(构造器 构造器) {
        this.角色名称 = 构造器.角色名称;
        this.发型 = 构造器.发型;
        this.发色 = 构造器.发色;
        this.武器 = 构造器.武器;
        this.装甲 = 构造器.装甲;
        this.职业 = 构造器.职业;
        this.副手 = 构造器.副手;
    }

    @Override
    public String toString() {
        return "角色:{"
                + "角色名称:" + this.角色名称 + ", "
                + "发型:" + this.发型 + ", "
                + "发色:" + this.发色 + ", "
                + "武器:" + this.武器 + ", "
                + "装甲:" + this.装甲 + ", "
                + "职业:" + this.职业 + ", "
                + "副手:" + this.副手 + ", "
                + "}";
    }

    public static class 构造器 {
        职业 职业;
        发型 发型;
        发色 发色;
        武器 武器;
        副手 副手;
        装甲 装甲;
        String 角色名称;

        public 构造器(职业 职业, String 角色名称) {
            this.职业 = 职业;
            this.角色名称 = 角色名称;
        }

        public 构造器 设置发色(发色 发色) {
            this.发色 = 发色;
            return this;
        }

        public 构造器 设置发型(发型 发型) {
            this.发型 = 发型;
            return this;
        }

        public 构造器 设置武器(武器 武器) {
            this.武器 = 武器;
            return this;
        }

        public 构造器 设置副手(副手 副手) {
            this.副手 = 副手;
            return this;
        }

        public 构造器 设置装甲(装甲 装甲) {
            this.装甲 = 装甲;
            return this;
        }

        public 角色 构建() {
            return new 角色(this);
        }
    }
}

enum 职业 {
    刺客,
    德鲁伊,
    法师,
    圣骑士,
    野蛮人,
    亚马逊,
    死灵法师
}

enum 发型 {
    秃头,
    披肩长发,
    长马尾,
    短发;
}

enum 发色 {
    红色,
    白色,
    黑色,
    绿色,
    紫色
}

enum 武器 {
    法杖,
    短剑,
    双手剑,
    双手斧,
    双手锤,
    爪子,,}

enum 副手 {
    盾牌,
    死灵法师尿壶,
    爪子,
    箭袋,
    弩袋
}

enum 装甲 {
    布甲,
    轻甲,
    重甲
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值