2023/10/26 每日总结
今天完成了设计模式 实验21
实验 21:观察者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解观察者模式的动机,掌握该模式的结构;
2、能够利用观察者模式解决实际问题。
[实验任务一]:股票提醒
当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。
类图
package org.test21; public interface Observer { void update(String state); } package org.test21; public class Stock extends Subject{ private String subjectState; public String getSubjectState() { return subjectState; } public void setSubjectState(String subjectState) { this.subjectState = subjectState; } @Override public void inform() { for (Observer observer:observers){ observer.update(subjectState); } } } package org.test21; public class StockHolder implements Observer{ @Override public void update(String state) { if (state.equals("up")){ System.out.println("股票升,买入"); } if (state.equals("down")){ System.out.println("股票降,痛哭"); } } } package org.test21; import java.util.ArrayList; public class Subject { protected ArrayList<Observer> observers=new ArrayList<>(); public void attach(Observer observer){ observers.add(observer); } public void detach(Observer observer){ observers.remove(observer); } public void inform(){ } } package org.test21; public class Client { public static void main(String[] args) { Stock stock = new Stock(); StockHolder stockHolder = new StockHolder(); stock.attach(stockHolder); stock.setSubjectState("up"); stock.inform(); stock.setSubjectState("down"); stock.inform(); } }