周五开发会议,项目组长对下一阶段各部门的开发做一个规划,由此想到了观察者模式。直接上代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ObserveDemo1
{
class Program
{
static void Main(string[] args)
{
Boss _boss = new Boss("开发周期四");
IWorker _fe = new FrontEngineer();
IWorker _be = new BackEngineer();
IWorker _fr = new FineArts();
_boss.AddObserver(_fe);
_boss.AddObserver(_be);
_boss.AddObserver(_fr);
_boss.Notify();
}
}
public abstract class ISubject
{
public string Name;
public List<IWorker> subjects = new List<IWorker>();
public ISubject(string _name)
{
this.Name = _name;
}
public void Notify()
{
foreach(IWorker _observer in subjects)
{
_observer.DoWork();
}
}
public void AddObserver(IWorker _observer)
{
this.subjects.Add(_observer);
}
public void RemoveObserver(IWorker _observer)
{
this.subjects.Remove(_observer);
}
}
public class Boss : ISubject
{
public Boss(string _name)
: base(_name)
{
}
}
public interface IWorker
{
void DoWork();
}
public class FrontEngineer:IWorker
{
public void DoWork()
{
Console.WriteLine("前端优化抽包动画特效");
}
}
public class BackEngineer : IWorker
{
public void DoWork()
{
Console.WriteLine("后端修改鬼市刷新机制");
}
}
public class FineArts : IWorker
{
public void DoWork()
{
Console.WriteLine("美工完成宣传图");
}
}
}