周五开发会议,项目组长对下一阶段各部门的开发做一个规划,由此想到了观察者模式。直接上代码
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("美工完成宣传图");
}
}
}
本文通过一个具体的项目场景,介绍了如何使用C#实现观察者模式。该模式允许一组对象观察另一个对象的状态变化,并在状态发生变化时自动接收通知。示例中包括了前端工程师、后端工程师及美工的角色实现。
344

被折叠的 条评论
为什么被折叠?



