代码设计的可扩展性
在之前的castlexx.Java项目工程文件中提到过代码设计的规范性。
在castlexx.Java文件中类Gamex和类Roomx的代码仍有需要改进的地方。
面向对象设计语言基本原则:
- 消除代码复制(代码复制时不良设计的一种表现);
- 增加可扩展性:可运行的代码可不等于(!= )良好的代码,对代码维护的时候就能看出代码的质量;
- 类和类之间的关系称作耦合,用封装来降低耦合:Roomx和Gamex都有大量的代码和出口相关;尤其时Gamex类中大量使用了Room类的成员变量,耦合越低越好,保持距离时形成良好代码的关键;
总的来说,要减少一些硬编码的地方,多增加一些方法以及灵活多的使用类库。
用接口实现聚合
package castlexx; import java.util.HashMap; public class Roomx {
//定义房间出口的属性,定义一个描述函数和四个成员变量 private String descrption; //描述方向 //用容器来实现灵活性:Roomx的方向使用成员变量表示的 private HashMap<String, Roomx>exits = new HashMap<String,Roomx>(); // key value // private Roomx northExit; // private Roomx southExit; // private Roomx eastExit; // private Roomx westExit; //构造 public Roomx(String description) {
this.descrption = description; //本地初始化 } //设置接口(也就是替换了之前的出口设置) public void setExit(String dir,Roomx roomx) {
exits.put(dir, roomx); } //设置出口 // public void setExits(Roomx north, Roomx east,Roomx south,Roomx west ) // {
// if(north != null) // northExit = north; // if(east != null) // eastExit = east; // if(south != null) // southExit = south; // if(west != null) // westExit = west; // // // } //覆盖函数 @Override public String toString() {
return descrption; } //获得房间出口信息 public String getExitDesc() {
StringBuffer sb = new StringBuffer(); //StringBuffer构造一个字符串缓冲区,其中没有字符,初始容量为16个字符。 for(String dir : exits.keySet() ) {
sb.append(dir); sb.append(" "); } return sb.toString(); // if(northExit != null) // sb.append(" north "); // if(eastExit != null) // sb.append("east "); // if(southExit != null) // sb.append("south ");
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/37826.html