⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 door.java

📁 用java模拟的电梯程序,可以选择有几层楼,一共有几个人在哪几层等电梯,可以不断的增加等电梯的人数,并看电梯如何以设定的方式运行.
💻 JAVA
字号:
// Door.java// Sends DoorEvents to DoorListeners when opened or closedpackage com.Anance.elevator.model;// Java core packagesimport java.util.*;// Deitel packagesimport com.Anance.elevator.event.*;public class Door implements ElevatorMoveListener {   // represent whether Door is open or closed   private boolean open = false;   // time before Door closes automatically   public static final int AUTOMATIC_CLOSE_DELAY = 3000;   // Set of DoorListeners   private Set doorListeners;   // location where Door opened or closed   private Location doorLocation;   // Door constructor instantiates Set for DoorListeners   public Door()   {      doorListeners = new HashSet( 1 );   }   // add Door listener   public void addDoorListener( DoorListener listener )   {      // prevent other objects from modifying doorListeners      synchronized( doorListeners )      {         doorListeners.add( listener );      }   }   // remove Door listener   public void removeDoorListener( DoorListener listener )   {      // prevent other objects from modifying doorListeners      synchronized( doorListeners )      {         doorListeners.remove( listener );      }   }   // open Door and send all listeners DoorEvent objects   public void openDoor( Location location )   {      if ( !open ) {         open = true;         // obtain iterator from Set         Iterator iterator;         synchronized( doorListeners )         {            iterator = new HashSet( doorListeners ).iterator();         }         // get next DoorListener         while ( iterator.hasNext() ) {            DoorListener doorListener =                ( DoorListener ) iterator.next();            // send doorOpened event to this DoorListener            doorListener.doorOpened(               new DoorEvent( this, location ) );         }         doorLocation = location;         // declare Thread that ensures automatic Door closing         Thread closeThread = new Thread(             new Runnable() {               public void run()               {                  // close Door if open for more than 3 seconds                  try {                     Thread.sleep( AUTOMATIC_CLOSE_DELAY );                     closeDoor( doorLocation );                 }                  // handle exception if interrupted                  catch ( InterruptedException exception ) {                     exception.printStackTrace();                  }               }            } // end anonymous inner class         );         closeThread.start();      }   } // end method openDoor   // close Door and send all listeners DoorEvent objects   public void closeDoor( Location location )   {      if ( open ) {         open = false;         // obtain iterator from Set         Iterator iterator;         synchronized( doorListeners )         {            iterator = new HashSet( doorListeners ).iterator();         }         // get next DoorListener         while ( iterator.hasNext() ) {            DoorListener doorListener =                ( DoorListener ) iterator.next();            // send doorClosed event to this DoorListener            doorListener.doorClosed(               new DoorEvent( this, location ) );         }      }   } // end method closeDoor   // return whether Door is open or closed   public boolean isDoorOpen()   {      return open;   }   // invoked after Elevator has departed   public void elevatorDeparted( ElevatorMoveEvent moveEvent ) {}   // invoked when Elevator has arrived   public void elevatorArrived( ElevatorMoveEvent moveEvent )   {      openDoor( moveEvent.getLocation() );   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -