using System;
namespace MyApp
{
class Program
{
static void Main()
{
QQSender qqSender = new QQSender();
NormalUser normalUser = new NormalUser("Rushui", qqSender);
SpecialUser specialUser = new SpecialUser("Yang", qqSender);
qqSender.TheNormalUser = normalUser;
qqSender.TheSpecialUser = specialUser;
normalUser.SendMessage("hi yang");
specialUser.SendMessage("hi fan");
normalUser.SendMessage("you can go to die now");
specialUser.SendMessage("okey...");
Console.ReadKey();
}
}
abstract class Sender
{
public abstract void SendMessage(string Message, User currentUser);
}
class QQSender : Sender
{
public NormalUser TheNormalUser { get; set; }
public SpecialUser TheSpecialUser { get; set; }
public override void SendMessage(string message, User currentUser)
{
if (TheNormalUser == currentUser)
{
TheNormalUser.Notisfy(message);
}
else
{
TheSpecialUser.Notisfy(message);
}
}
}
abstract class User
{
public Sender TheSender { get; set; }
public string Name { get; set; }
public User(string name, Sender sender)
{
Name = name;
TheSender = sender;
}
public abstract void Notisfy(string message);
public void SendMessage(string message)
{
TheSender.SendMessage(message, this);
}
public void NotisfyTemplate(string message,string userKind)
{
Console.WriteLine("{0}({1} User) Said:", Name, userKind);
Console.WriteLine(message);
Console.WriteLine();
}
}
class NormalUser : User
{
public NormalUser(string name, Sender sender)
: base(name, sender)
{ }
public override void Notisfy(string message)
{
NotisfyTemplate(message, "Normal");
}
}
class SpecialUser : User
{
public SpecialUser(string name, Sender sender)
: base(name, sender)
{ }
public override void Notisfy(string message)
{
NotisfyTemplate(message, "Special");
}
}
}
本文介绍了一个基于C#的消息发送系统实现,该系统通过抽象基类定义了消息发送的行为,并利用具体类如NormalUser和SpecialUser实现了不同类型的用户消息通知逻辑。此设计展示了面向对象编程中的继承和多态特性。
1409

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



