Observer
using System;
using System.Collections.Generic;
using System.Text;
namespace Design_Pattern.Observer
{
public delegate void SubEventHandler();
public abstract class Subject
{
public event SubEventHandler subEvent;
protected void OnFireWay()
{
if (this.subEvent != null)
{
subEvent();
}
}
public abstract void Cry();
}
public class Cat:Subject
{
public override void Cry()
{
this.OnFireWay();
}
}
public abstract class Observer
{
public Observer(Subject sub)
{
sub.subEvent += new SubEventHandler(Response);
}
public abstract void Response();
}
public class Mouse:Observer
{
private string name;
public override void Response()
{
Console.WriteLine(this.name+" Wa!!Run");
}
public Mouse(string name, Subject sub):base(sub)
{
this.name = name;
}
}
public class Test2
{
public static void Main()
{
Console.WriteLine("HEllO");
Subject sub = new Cat();
Console.WriteLine("1");
Observer mouse1 = new Mouse("mouse1", sub);
Observer mouse2 = new Mouse("mouse2", sub);
sub.Cry();
Console.ReadLine();
}
}
}
/*
* 类应该依赖于抽象 而不应该依赖于具体类 依赖倒置原则
* 面向接口编程 接口稳定 表达了契约的合同
* 单一职责原则
* 开闭原则
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace DesignPattern.Observer2
{
// public delegate void AccountChangedEventhandler(Object sender, EventArgs args);
public delegate void AccountChangedEventhandler();
class BankAccount
{
public event AccountChangedEventhandler AccountChanged;
private void OnAccountChanged()
{
if (AccountChanged != null)
{
AccountChanged();
}
}
public new void WithDraw()
{
//
.
this.OnAccountChanged();
}
}
interface IObserver
{
void Send();
}
class Mailer : IObserver
{
public void Send()
{
Console.WriteLine("Send email message");
}
}
class Mobile : IObserver
{
public void Send()
{
Console.WriteLine("Send Mobile message");
}
}
class App
{
//public static void Main()
//{
// BankAccount account = new BankAccount();
// //Mobile mobile = new Mobile();
// account.AccountChanged += new AccountChangedEventhandler(new Mobile().Send);
// account.AccountChanged += new AccountChangedEventhandler(new Mailer().Send);
// account.WithDraw();
// Console.ReadLine();
//}
}
}


浙公网安备 33010602011771号