状态模式(State Pattern)

状态模式(State Pattern),第1张

概述介绍 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。 示例 有一个Message实体类,对它的 *** 作有Insert()和Get()方法,持久化数据在SqlServer数据库中或Xml文件里。在对象内部可以根据用户的不同选择不同的数据持久化方案。 MessageModel using  System; using  System.Collections.Generic;

介绍
允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。


示例
有一个Message实体类,对它的 *** 作有Insert()和Get()方法,持久化数据在sqlServer数据库中或Xml文件里。在对象内部可以根据用户的不同选择不同的数据持久化方案。




MessageModel

using  System;

 System.Collections.Generic;

 System.Text;


namespace  Pattern.State

{

    
/// <summary>

    
 Message实体类

    
</summary>

    public class MessageModel

    
{

        

        
 构造函数

        
</summary><param name="msg">Message内容</param>

        
<param name="pt">Message发布时间</param>

         MessageModel(string msg, DateTime pt)

        
{

            
this._message = msg;

            
._publishTime  pt;

        }


        
private _message;

        
 Message内容

        
 Message

        
{

            
get return _message; }

            
set { _message  value; }

        }
 DateTime _publishTime;

        
 Message发布时间

        
 DateTime PublishTime

        
{

            
  _publishTime; }

            
 @H_833_301@{ _publishTime 

    }

}


AbstractMessageState

 Pattern.State

{

    
 状态模式抽象类

    
abstract AbstractMessageState

    
{

        
 Context类型

        
protected Message _message;


        
 Context类型属性

        
 Message Message

        
{

            
 @H_342_404@

            
 


        
 改变状态

        
voID StateChangeCheck();


        
 获取Message

        
<returns></returns>

 List<MessageModel> Get();


        
 插入Message

        
<param name="mm">Message实体对象bool Insert(MessageModel mm);

    }

XmlMessage

 Pattern.State

{

    
 Xml方式 *** 作Message

    
 XmlMessage : AbstractMessageState

    
{

        
<param name="message">Context类型参数 XmlMessage(Message message)

        
 message;

        }


        
overrIDe StateChangeCheck()

        
// 如果UserID是admin则变换状态为sqlMessage

            if (._message.UserID =="admin)

            
{

                
._message.AbstractMessageState new sqlMessage(._message);

            }


        
 Get()

        
{

            List
 l ();

            l.Add(
XML方式获取Message, DateTime.Now));


            
 l;

        }


        
 Insert(MessageModel mm)

        
 代码略true;

        }

sqlMessage

 Pattern.State

 sql方式 *** 作Message

    
 sqlMessage : AbstractMessageState

    
 sqlMessage(Message message)

        
 StateChangeCheck()

        
{


        }


        
 Get()

        
sql方式获取Message


        
 Insert(MessageModel mm)

        

Message

 Pattern.State

{

    
 Context类

    
 Message

    
{

        
 类型为状态模式抽象类的私有变量

        
 AbstractMessageState _abstractMessageState;


        
 类型为状态模式抽象类的属性

        
 AbstractMessageState AbstractMessageState

        
{

            
  _abstractMessageState; }

            
 { _abstractMessageState        


        
 UserID私有变量

        
 _userID;


        
 UserID

        
 UserID

        
{

            
  _userID; }

            
 { _userID 


        
<param name="userID">UserID Message( userID)

        
._userID  userID;


            _abstractMessageState 
 XmlMessage();

        }


        
 Get()

        
 修改状态            _abstractMessageState.StateChangeCheck();


            
 _abstractMessageState.Get();

        }


        
 Insert(MessageModel mm)

        
 _abstractMessageState.Insert(mm);

        }


clIEnt

 System.Data;

 System.Configuration;

 System.Collections;

 System.Web;

 System.Web.Security;

 System.Web.UI;

 System.Web.UI.WebControls;

 System.Web.UI.WebControls.WebParts;

 System.Web.UI.HTMLControls;


 Pattern.State;


public  partial  class  State : System.Web.UI.Page

{

    
 Page_Load(object sender, EventArgs e)

    
{

        Message m 
);

        Response.Write(m.Insert(
插入

        Response.Write(
<br />);

        Response.Write(m.Get()[
0].Message + m.Get()[].PublishTime.ToString());

        Response.Write(
);


        m 
user);

    }

运行结果
True
sql方式获取Message 2007-3-6 22:58:17
True
XML方式获取Message 2007-3-6 22:58:17


参考
http://www.dofactory.com/Patterns/PatternState.aspx

总结

以上是内存溢出为你收集整理的状态模式(State Pattern)全部内容,希望文章能够帮你解决状态模式(State Pattern)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1178558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存