乐在其中设计模式(C#) - 状态模式(State Pattern).doc
《乐在其中设计模式(C#) - 状态模式(State Pattern).doc》由会员分享,可在线阅读,更多相关《乐在其中设计模式(C#) - 状态模式(State Pattern).doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、介绍允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。示例有一个Message实体类,对它的操作有Insert()和Get()方法,持久化数据在SqlServer数据库中或Xml文件里。在对象内部可以根据用户的不同选择不同的数据持久化方案。MessageModelusingSystem;usingSystem.Collections.Generic;usingSystem.Text; namespacePattern.State/*/Message实体类/publicclassMessageModel/*/构造函数/Message内容/Message发布时间publi
2、cMessageModel(stringmsg,DateTimept)this._message=msg;this._publishTime=pt;privatestring_message;/*/Message内容/publicstringMessagegetreturn_message;set_message=value;privateDateTime_publishTime;/*/Message发布时间/publicDateTimePublishTimegetreturn_publishTime;set_publishTime=value;AbstractMessageStateusin
3、gSystem;usingSystem.Collections.Generic;usingSystem.Text; namespacePattern.State/*/状态模式抽象类/publicabstractclassAbstractMessageState/*/Context类型/protectedMessage_message;/*/Context类型属性/publicMessageMessagegetreturn_message;set_message=value;/*/改变状态/publicabstractvoidStateChangeCheck();/*/获取Message/pub
4、licabstractListGet();/*/插入Message/Message实体对象/publicabstractboolInsert(MessageModelmm);XmlMessageusingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacePattern.State/*/Xml方式操作Message/publicclassXmlMessage:AbstractMessageState/*/构造函数/Context类型参数publicXmlMessage(Messagemessage)this._mes
5、sage=message;/*/改变状态/publicoverridevoidStateChangeCheck()/如果UserId是admin则变换状态为SqlMessageif(this._message.UserId=admin)this._message.AbstractMessageState=newSqlMessage(this._message);/*/获取Message/publicoverrideListGet()Listl=newList();l.Add(newMessageModel(XML方式获取Message,DateTime.Now);returnl;/*/插入Me
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乐在其中设计模式C# 状态模式State Pattern 乐在其中 设计 模式 状态 State Pattern
限制150内