java设计模式进阶_property
来源:互联网 发布:淘宝免费开店步骤 编辑:程序博客网 时间:2024/06/08 20:11
////// Generated by StarUML(tm) Java Add-In//// @ Project : Untitled// @ File Name : Prototype.java// @ Date : 2016/9/1// @ Author : ////public interface Prototype { public Integer get(Stats stats); public boolean has(Stats stats); public void set(Stats stats, Integer val); public void remove(Stats stats);}import java.util.HashMap;import java.util.Map;////// Generated by StarUML(tm) Java Add-In//// @ Project : Untitled// @ File Name : Character.java// @ Date : 2016/9/1// @ Author : ////public class Character implements Prototype { public enum Type{ WARRIOR, MAGE, ROGUE } private final Prototype prototype; private Map<Stats,Integer> properties = new HashMap<>(); private String name; private Type type; public Character() { this.prototype = new Prototype() { // Null-value object @Override public Integer get(Stats stat) { return null; } @Override public boolean has(Stats stat) { return false; } @Override public void set(Stats stat, Integer val) { } @Override public void remove(Stats stat) { }} ; } public Character(Type type, Prototype prototype) { this.type = type; this.prototype = prototype; } public Character(String name, Character prototype) { this.name = name; this.type = prototype.type; this.prototype = prototype; } public String name() { return name; } public Type type() { return type; } public Integer get(Stats stat) { boolean containsValue = properties.containsKey(stat); if (containsValue) { return properties.get(stat); } else { return prototype.get(stat); } } public boolean has(Stats stats) { return get(stats) != null; } public void set(Stats stat, Integer val) { properties.put(stat, val); } public void remove(Stats stats){ properties.put(stats, null); } @Override public String toString() { StringBuilder builder = new StringBuilder(); if (name != null) { builder .append("Player: ") .append(name) .append("\n"); } if (type != null) { builder .append("Character type: ") .append(type.name()) .append("\n"); } builder.append("Stats:\n"); for (Stats stat : Stats.values()) { Integer value = this.get(stat); if (value == null) { continue; } builder .append(" - ") .append(stat.name()) .append(":") .append(value) .append("\n"); } return builder.toString(); }}public enum Stats { AGILITY, STRENGTH, ATTACK_POWER, ARMOR, INTELLECT, SPIRIT, ENERGY, RAGE}import com.think.in.java.design.pattern.lesson31.Character.Type;public class App { public static void main(String[] args) { /* set up */ Prototype charProto = new Character(); charProto.set(Stats.STRENGTH, 10); charProto.set(Stats.AGILITY, 10); charProto.set(Stats.ARMOR, 10); charProto.set(Stats.ATTACK_POWER, 10); Character mageProto = new Character(Type.MAGE, charProto); mageProto.set(Stats.INTELLECT, 15); mageProto.set(Stats.SPIRIT, 10); Character warProto = new Character(Type.WARRIOR, charProto); warProto.set(Stats.RAGE, 15); warProto.set(Stats.ARMOR, 15); // boost default armor for warrior Character rogueProto = new Character(Type.ROGUE, charProto); rogueProto.set(Stats.ENERGY, 15); rogueProto.set(Stats.AGILITY, 15); // boost default agility for rogue /* usage */ Character mag = new Character("Player_1", mageProto); mag.set(Stats.ARMOR, 8); System.out.println(mag); Character warrior = new Character("Player_2", warProto); System.out.println(warrior); Character rogue = new Character("Player_3", rogueProto); System.out.println(rogue); Character rogueDouble = new Character("Player_4", rogue); rogueDouble.set(Stats.ATTACK_POWER, 12); System.out.println(rogueDouble); }}/*Player: Player_1Character type: MAGEStats: - AGILITY:10 - STRENGTH:10 - ATTACK_POWER:10 - ARMOR:8 - INTELLECT:15 - SPIRIT:10Player: Player_2Character type: WARRIORStats: - AGILITY:10 - STRENGTH:10 - ATTACK_POWER:10 - ARMOR:15 - RAGE:15Player: Player_3Character type: ROGUEStats: - AGILITY:15 - STRENGTH:10 - ATTACK_POWER:10 - ARMOR:10 - ENERGY:15Player: Player_4Character type: ROGUEStats: - AGILITY:15 - STRENGTH:10 - ATTACK_POWER:12 - ARMOR:10 - ENERGY:15*/
0 0
- java设计模式进阶_property
- Java进阶-设计模式
- java设计模式进阶_singleton
- java设计模式进阶_prototype
- java设计模式进阶_builder
- java设计模式进阶_decorator
- java设计模式进阶_strategy
- java设计模式进阶_visitor
- java设计模式进阶_flyweight
- java设计模式进阶_proxy
- java设计模式进阶_facade
- java设计模式进阶_composite
- java设计模式进阶_bridge
- java设计模式进阶_adapter
- java设计模式进阶_interpreter
- java设计模式进阶_mediator
- java设计模式进阶_chain
- java设计模式进阶_iterator
- fragment中判断网络
- hdu1010Tempter of the Bone 搜索
- web前端总结一DOM性能优化
- 异或应用小总结
- iOS --判断设备是否为越狱设备,防止越狱设备进行iap内购
- java设计模式进阶_property
- Flume官方文档翻译之(三)
- 【用Cocos Creator给暗恋的女生写一个游戏(11)】——(Jump Game) 镜头跟随
- 【如何快速的开发一个简单的iOS直播app】(代码篇)
- 关于移动视频直播技术,关键干货都在这里了(三)编码和封装
- 异常体系
- 给Raspbian加上炫酷的SSH欢迎信息
- 大数据技术应用列表Top 10
- 二叉树的后序,先序,中序遍历的非递归遍历