实验 21:观察者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解观察者模式的动机,掌握该模式的结构;
2、能够利用观察者模式解决实际问题。
[实验任务一]:股票提醒
当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。
类图
源代码
package test21; import java.util.ArrayList; public class Gufen extends Subject{ public void up(){ System.out.println("****股份上涨15%****"); for(Observer guan:observers){ guan.buy(); } } public void down(){ System.out.println("****股份下跌15%****"); for(Observer guan:observers){ guan.cry(); } } } package test21; public class Gumin implements Observer{ private String name; public Gumin(String a){name=a;} public void buy(){ System.out.println("股民"+name+"买了一些股票"); } public void cry(){ System.out.println("股民"+name+"哭了"); } } package test21; public class main { public static void main(String[] args) { Gufen f=new Gufen(); Gumin g1=new Gumin("小张"); Gumin g2=new Gumin("小龚"); f.attach(g1); f.attach(g2); f.up(); f.down(); } } package test21; public interface Observer { public void buy(); public void cry(); } package test21; import java.util.ArrayList; public abstract class Subject { protected ArrayList<Observer> observers; public Subject(){ observers=new ArrayList<>(); } public void attach(Observer a){ observers.add(a); } public void detach(Observer a){ observers.remove(a); } public abstract void up(); public abstract void down(); }
标签:Gumin,test21,Observer,void,观察者,模式,observers,public From: https://www.cnblogs.com/pinganxile/p/18639667