ratechange.java

来自「Java 入门书的源码」· Java 代码 · 共 72 行

JAVA
72
字号
//Copyright (c) 1998, Arthur Gittleman
//This example is provided WITHOUT ANY WARRANTY either expressed or implied.

/* Use RateChangeListener interface
 * to provide callbacks to investor and
 * business objects from the federal bank
 * when the rate changes.
 */

interface RateChangeListener {
  public void rateRaised(double amount);
  public void rateLowered(double amount);
}
class Investor implements RateChangeListener {
  private FederalBank bank;
  public Investor(FederalBank f) {
    bank = f;
    bank.addRateChangeListener(this);
  }  
  public void rateRaised(double amount) {
    System.out.println("   Investor sells stocks");
  }
  public void rateLowered(double amount) {
    System.out.println("   Investor buys stocks");
  }
}
class Business implements RateChangeListener {
  private FederalBank bank;
  public Business(FederalBank f) {
    bank = f;
    bank.addRateChangeListener(this);
  }  
  public void rateRaised(double amount) {
    System.out.println("   Business reduces debt");
  }
  public void rateLowered(double amount) {
    System.out.println("   Business takes a loan");
  }
}
class FederalBank {
  public static final int SIZE = 10;
  private RateChangeListener [] listener = 
                    new RateChangeListener[SIZE];
  private int index = 0;
  public void addRateChangeListener(RateChangeListener r) {
    if (index < SIZE)
      listener[index++] = r;
    else
      System.out.println("Unable to add more listeners");
  }
  public void raiseRate(double amount) {
    for (int i=0; i<index; i++)
      listener[i].rateRaised(amount);
  } 
  public void lowerRate(double amount) {
    for (int i=0; i<index; i++)
      listener[i].rateLowered(amount);
  }
} 
public class RateChange {
  public static void main(String [] args) {
    FederalBank bank = new FederalBank();
    Investor investor = new Investor(bank);
    Business business = new Business(bank);
    System.out.println("Fed raises rates");
    bank.raiseRate(.50);
    System.out.println("Fed lowers rates");
    bank.lowerRate(.25);
  }
}
               

⌨️ 快捷键说明

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