观察者模式——java实现
问题描述:
当股票的价格上涨或下降5%时,会通知持有该股票的股民,当股民听到价格上涨的消息时会买股票,当价格下降时会大哭一场。
Java源代码:
1 //Observer.java
2 package shiyan21;
3
4 public interface Observer {
5 public void buy();
6 public void cry();
7 }
8 //Subject.java
9 package shiyan21;
10
11 import java.util.ArrayList;
12
13 public abstract class Subject {
14 protected ArrayList<Observer> observers;
15 public Subject(){
16 observers=new ArrayList<>();
17 }
18 public void attach(Observer a){
19 observers.add(a);
20 }
21 public void detach(Observer a){
22 observers.remove(a);
23 }
24 public abstract void up();
25 public abstract void down();
26 }
27 //Gufen.java
28 package shiyan21;
29
30 import java.util.ArrayList;
31 public class Gufen extends Subject{
32 public void up(){
33 System.out.println("****股份上涨5%****");
34 for(Observer guan:observers){
35 guan.buy();
36 }
37 }
38 public void down(){
39 System.out.println("****股份下跌5%****");
40 for(Observer guan:observers){
41 guan.cry();
42 }
43 }
44 }
45 //Gumin.java
46 package shiyan21;
47
48 public class Gumin implements Observer{
49 private String name;
50 public Gumin(String a){name=a;}
51 public void buy(){
52 System.out.println("股民"+name+"买了一些股票");
53 }
54 public void cry(){
55 System.out.println("股民"+name+"哭了");
56 }
57 }
58 //main.java
59 package shiyan21;
60 public class main {
61 public static void main(String[] args) {
62 Gufen f=new Gufen();
63 Gumin g1=new Gumin("小张");
64 Gumin g2=new Gumin("小王");
65 f.attach(g1);
66 f.attach(g2);
67 f.up();
68 f.down();
69 }
70 }

浙公网安备 33010602011771号