我正在设计一个基于文本的冒险游戏学校进步.我将每个“级别”设置为一个类,并将每个可探索区域(节点)作为适当类中的方法.
令人困惑的是从一个节点移动到另一个节点的代码.因为每个节点连接到最多四个其他节点,所以我必须在每个方法中重复一个非常相似的代码块.
public static void zero() { ... adjacentNodes[] = {one(),two(),three(),four()}; }
然后将该数组发送到通用方法,并将其发送到正确的节点:
public static void move(...[] adjacentNodes,int index) { adjacentNodes[index]; }
我简化了我的代码,但这是一般的想法.这可能吗?
解决方法
每当你想到指针到功能时,你都可以通过使用适配器模式(或变体)来转换为Java.这将是这样的:
public class Node { ... public void gonorth() { ... } public void goSouth() { ... } public void goEast() { ... } public void goWest() { ... } interface MoveAction { void move(); } private MoveAction[] moveActions = new MoveAction[] { new MoveAction() { public void move() { gonorth(); } },new MoveAction() { public void move() { goSouth(); } },new MoveAction() { public void move() { goEast(); } },new MoveAction() { public void move() { goWest(); } },}; public void move(int index) { moveActions[i].move(); } }
原文地址:https://www.jb51.cc/java/124159.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。