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 + -
显示快捷键?