博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# ObServer 技术

Posted on 2006-08-29 23:07  Shu  阅读(335)  评论(0)    收藏  举报
 1     public struct AccountChangeEventArgs
 2     {
 3         public string AccountNumber;
 4         public string PhoneNumber;
 5         public string Email;
 6     }
 7 
 8     public interface IAccountObserver
 9     {
10         void Update(AccountChangeEventArgs args); 
11     }
12 
13     public abstract class Subject
14     {
15         protected ArrayList observerList = new ArrayList();
16 
17         protected virtual void Notify(AccountChangeEventArgs args)
18         {
19             foreach (IAccountObserver observer in observerList)
20             {
21                 observer.Update(args);
22             }
23         }
24 
25         public void AddObserver(IAccountObserver observer)
26         {
27             observerList.Add(observer);
28         }
29 
30         public void RemoveObserver(IAccountObserver observer)
31         {
32             observerList.Remove(observer);
33         }
34     }
35 
36     public class BankAccount : Subject
37     {
38         public void Withdraw(int data)
39         {
40             //
41             AccountChangeEventArgs args = new AccountChangeEventArgs();
42             //
43             Notify(args);
44         }
45     }
46 
47     public class Emailer : IAccountObserver
48     {
49         public virtual void Update(AccountChangeEventArgs args)
50         {
51             //
52         }
53     }
54 
55     public class Mobile : IAccountObserver
56     {
57         public virtual void Update(AccountChangeEventArgs args)
58         {
59             //
60         }
61     }
62