Spring源码之七registerListeners()及发布订阅模式

释放双眼,带上耳机,听听看~!


public class RMBrateTest {
public static void main(String[] args) {
Rate rate = new RMBrate();
Company watcher1 = new ImportCompany();
Company watcher2 = new ExportCompany();
rate.add(watcher1);
rate.add(watcher2);
rate.change(10);
rate.change(-9);
}
}
//抽象目标:汇率
abstract class Rate {
protected List companys = new ArrayList();
//增加观察者方法
public void add(Company company) {
companys.add(company);
}
//删除观察者方法
public void remove(Company company) {
companys.remove(company);
}
public abstract void change(int number);
}
//具体目标:人民币汇率
class RMBrate extends Rate {
public void change(int number) {
for (Company obs : companys) {
((Company) obs).response(number);
}
}
}
//抽象观察者:公司
interface Company {
void response(int number);
}
//具体观察者1:进口公司
class ImportCompany implements Company {
public void response(int number) {
if (number > 0) {
System.out.println(“人民币汇率升值” + number + “个基点,降低了进口产品成本,提升了进口公司利润率。”);
} else if (number < 0) {
System.out.println(“人民币汇率贬值” + (-number) + “个基点,提升了进口产品成本,降低了进口公司利润率。”);
}
}
}
//具体观察者2:出口公司
class ExportCompany implements Company {
public void response(int number) {
if (number > 0) {
System.out.println(“人民币汇率升值” + number + “个基点,降低了出口产品收入,降低了出口公司的销售利润率。”);
} else if (number < 0) {
System.out.println(“人民币汇率贬值” + (-number) + “个基点,提升了出口产品收入,提升了出口公司的销售利润率。”);
}
}
}

【转自慕课】https://www.imooc.com

JAVA

软件架构-Hystrix&Feign监控Dashboard与Turbine聚合

2022-3-8 12:35:19

Go

Go Web实践:连载四 搭建Blog API's(三)

2022-3-3 10:49:18

搜索