设计原则之城堡游戏(中)

@spiritree  August 23, 2016

用封装来降低耦合

  • Room类和Game类不能有大量的代码和出口相关

  • Game类尽量不使用Room类的成员变量

  • 类与类之间的关系成为耦合

  • 耦合越低越好,保持距离是良好代码的关键

  • 用封装来降低耦合(类与类的分离度.成员变量都私有),用接口来实现聚合,用容器来实现灵活性+可扩展性

    • 用Hash表来表示方向(字符串来对应什么东西)

Room类

public class Room {
   private String description;
   private HashMap<String, Room> exits = new HashMap<String, Room>();

   public Room(String description)
   {
       this.description = description;
   }

   public void setExit(String dir, Room room) {
       exits.put(dir, room);
   }

   @Override
   public String toString()
   {
       return description;
   }

   public String getExitDesc() {
       StringBuffer sb = new StringBuffer();
       for (String dir : exits.keySet() ) {
           sb.append(dir);
           sb.append(' ');
       }
       return sb.toString();
   }

   public Room getExit(String direction) {
       return exits.get(direction);
   }
}

如果字符串修改操作比较频繁,应该采用StringBuilder和StringBuffer类,这两个类的方法基本是完全一样的,它们的实现代码也几乎一样,唯一的不同就在于,StringBuffer是线程安全的,而StringBuilder不是。


添加新评论

  1. 代码格式化插件用的什么?给我发邮箱一份把?

    Reply