實驗 21:觀察者模式

不会JAVA的小袁發表於2024-11-20

本次實驗屬於模仿型實驗,透過本次實驗學生將掌握以下內容:

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、執行截圖

相關文章