观察者、备忘录模式
其他
2019-07-05 21:59:00
阅读次数: 0
实验目的与任务 目的:熟悉UML的使用,熟悉观察者、备忘录模式。
任务:按照实验内容要求,完成使用观察者、备忘录模式实现实验内容。 |
预习内容 复习课程的内容,熟悉观察者、备忘录模式的使用。 |
实验内容及要求
1、商品有名称、价格等信息,价格会有折扣等变动,如果变动后价格会自动通知关注该商品的用户,请结合观察者模式,设计出类图并给出相关代码。
- 备忘录模式:
- Windows系统可能会异常,需要一个备份系统,请结合备忘录模式实现该工具,给出类图和代码。
|
实验结果(可续页) 一:
扫描二维码关注公众号,回复:
6759994 查看本文章
Subject(目标):
package observer; import java.awt.List; import java.util.ArrayList; /* * 目标类,在这里指商品 */ public class Subject{ ArrayList<Observer> list = new ArrayList<Observer>(); public void attach(Observer observer){ list.add(observer); System.out.println("添加了一个观察者!"); } public void detach(Observer observer){ list.remove(observer); System.out.println("删除了一个观察者!"); } void notifyObservers(int price){ for(Observer observer:list) observer.update(price); } } |
ConcreteSubject(具体目标):
package observer; import java.awt.List; import java.util.ArrayList; /* * 具体目标,这里是笔 */ public class ConcreteSubject extends Subject{ private String name; private int price; public ConcreteSubject(String name,int price){ this.name=name; this.price=price; } public void change(int price){ this.price=price; notifyObservers(price); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } |
Observer(观察者):
package observer; /* * 观察者 */ public interface Observer { public void update(int price); } |
ConcreteObserver(具体观察者):
package observer; /* * 具体观察者 */ public class ConcreteObserver implements Observer{ private int price; @Override public void update(int price) { // TODO Auto-generated method stub this.price=price; System.out.println("商品价格变动为:"+price); } } |
Main:
package observer; public class Main { public static void main(String args[]){ Subject pen=new ConcreteSubject("铅笔",10); ConcreteObserver client=new ConcreteObserver(); pen.attach(client); pen.notifyObservers(15); } } |
类图: 结果: 二: Originator(原发器):
Memento(备忘录):
Caretaker(负责人):
Main:
结果: 类图: 思考题:
- 我和妹妹跟妈妈说:“妈妈,我和妹妹在院子里玩,饭做好了叫我们一声”。请问这是什么模式?请给出类图。
观察者模式. 2、假设有两个网站site1、site2,当一个用户进入site1后,使用了session来记录。当用户现在访问site2一段时间,这时用户访问site1就会session失效,请问如何保存session来解决这个问题? 通过备忘录模式解决。用户一开始访问site1时开启备忘录模式,将session信息备份一边,当用户访问site2一段时间后再访问site1,打开备忘录模式,将备份的session信息导出替换。 |
转载自blog.csdn.net/yszbrzdd/article/details/93376425