本次實驗屬於模仿型實驗,透過本次實驗學生將掌握以下內容:
1、理解觀察者模式的動機,掌握該模式的結構;
2、能夠利用觀察者模式解決實際問題。
[實驗任務一]:股票提醒
當股票的價格上漲或下降5%時,會通知持有該股票的股民,當股民聽到價格上漲的訊息時會買股票,當價格下降時會大哭一場。
實驗要求:
1. 畫出對應類圖;
2. 提交原始碼;
3. 注意程式設計規範。
1、類圖
1、原始碼
package org.example;
import java.util.ArrayList;
public class Fen{
private ArrayList<Guancha> oblist;
public Fen(){
oblist=new ArrayList<>();
}
public void add(Guancha a){
oblist.add(a);
}
public void remove(Guancha a){
oblist.remove(a);
}
public void sheng(double a){
if(a>0.05)
for(Guancha guan:oblist){
guan.sheng();
}
}
public void jiang(double a){
if(a>0.05)
for(Guancha guan:oblist){
guan.jiang();
}
}
}
package org.example;
public class Gumin implements Guancha{
private String name;
public Gumin(String a){name=a;}
public void sheng(){
System.out.println(name+"買了一些股票(股票升了)");
}
public void jiang(){
System.out.println("股票降價了,哭了");
}
}
package org.example;
public class main {
public static void main(String[] args) {
Fen f=new Fen();
Gumin g1=new Gumin("第一個股民");
Gumin g2=new Gumin("第二個股民");
f.add(g1);
f.add(g2);
System.out.println("股票升了");
f.sheng(0.1);
System.out.println("比率小於0.05");
System.out.println();
f.sheng(0.001);
System.out.println("股票降了");
f.jiang(0.1);
System.out.println("比率小於0.05");
System.out.println();
f.jiang(0.001);
}
}
package org.example;
public interface Guancha {
public void sheng();
public void jiang();
}
2、執行截圖