场景:网站发送消息。
三种类型消息:邮件、短信、站内消息
消息预定义了很多方法,比如会员注册后发送邮件+站内欢迎消息;购物后发送短信+邮件+站内消息,付款后发送邮件+站内消息;购物完毕后发送邮件+站内消息。类似这样的方法不下几十种。
现在想重构代码,该应用哪种模式呢?
仅仅说说我的思路吧,干一件事情有很多方式,如果无法选择,先有你最熟悉的方式实现,再优化,PDCA模型。如果可能,在设计时考虑重要接口。
当然是observer模式了。
public class Msg
{
List<IMsgObserver> observers=new List<IMsgObserver>();
AddObserver(IMsgObserver observer);
RemoveObserver(IMsgObserver observer);
SendMsg(msg);
}
public abstract class IMsgObserver
{
abstract void SendMsg(msg);
}
public class Mail:IMsgObserver{}
public class Sms:IMsgObserver{}
public class InternalMail:IMsgObserver{}
结构大概就是这个,可以具体参考。