天下無雙
阿龍 --质量是流程决定的。
namespace DemoObserver
{
    
public interface IAccountObservre
    {
        
void Update(userAccount args);
    }



    
public class Emailer : IAccountObservre
    {
        
public void Update(UserAccountArgs args)
        {
            
//....
            string toAddress = args.ToAddress;
        }
    }

    
public class Mobile : IAccountObservre
    {
        
public void Update(UserAccountArgs args)
        {
            
//....
            string mobileNumber = args.MobileNumber;
        }
    }


    
public abstract class Subject
    {
        ArrayList
<IAccountObservre> observerList = new ArrayList<IAccountObservre>();


        
protected virtual void Notify(UserAccount args)
        {
            
foreach (IAccountObservre observer in observerList)
            {
                observer.Update(args);
            }
        }


        
public void AddObserver(IAccountObservre observer)
        {
            observerList.Add(observer);
        }

        
public void RemoveObserver(IAccountObservre observer)
        {
            observerList.Remove(observer);
        }
    }

    
public class BankAccount : Subject
    {

        
public void Withdraw(int data)
        {
            
//....
            UserAccountArgs args = new UserAccountArgs();
            
//....
            Notify(args);

        }
    }
}


posted on 2010-05-07 11:08  阿龍  阅读(121)  评论(0编辑  收藏  举报