관찰소 모드

4668 단어 패턴
역치원칙에 의존하다
추상에 의존하여 가능한 한 확장하고 수정과 파괴가 아니다
 public abstract class Subject
    {
        IList<IAccountObserver> observerList = new List<IAccountObserver>();

        public void AddObserver( IAccountObserver observer )
        {
            observerList.Add( observer );
        }
        public void RemoveObserver( IAccountObserver observer )
        {
            observerList.Remove( observer );
        }

        public void Notify( UserAccountArgs args )
        {
            foreach( IAccountObserver observer in observerList )
            {
                observer.Update( args );
            }
        }
    }    
 public class UserAccountArgs
    {
        public string PhoneNumber;
        public string Email;
    }
  public class BankAccount : Subject
    {
        public void WithDraw( UserAccountArgs args )
        {
            Notify( args );
        }
    }
  public interface IAccountObserver
    {
        void Update(UserAccountArgs args);
    }
 public class Mobile:IAccountObserver
    {
        public void Update( UserAccountArgs args )
        {
        }
    }
public class Emailer:IAccountObserver
    {
        public void Update( UserAccountArgs args )
        {
        }
    }

호출
 static void Main( string[] args )
        {
            Subject subject = new BankAccount();
            
            UserAccountArgs arg = new UserAccountArgs();
            arg.Email = "";
            arg.PhoneNumber = "";

            IAccountObserver observer1 = new Emailer();
            IAccountObserver observer2 = new Mobile();

            subject.AddObserver( observer1 );
            subject.AddObserver( observer2 );

            subject.Notify( arg );
        }

원칙을 위한 모드이지 모드를 위한 코드가 아니다

좋은 웹페이지 즐겨찾기