乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

原文:乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

[索引页]
[源码下载]


乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)


作者:webabcd


介绍
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。


示例
有一个Message实体类,某些对象对它的操作有Insert()和Get()方法,现在要针对其中某一方法进行操作。
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)


MessageModel
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// Message实体类
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public class MessageModel
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 构造函数
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="msg">Message内容</param>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="pt">Message发布时间</param>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public MessageModel(string msg, DateTime pt)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
this._message = msg;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
this._publishTime = pt;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
private string _message;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// Message内容
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public string Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
get 乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)return _message; }
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
set 乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){ _message = value; }
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
private DateTime _publishTime;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// Message发布时间
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public DateTime PublishTime
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
get 乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)return _publishTime; }
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
set 乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){ _publishTime = value; }
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

AbstractElement
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// 抽象元素(Element)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public abstract class AbstractElement
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 执行抽象访问者的Visit()方法(从而执行抽象元素的方法)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="abstractVisitor">抽象访问者</param>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public abstract string Accept(AbstractVisitor abstractVisitor);
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// 操作Message抽象类(Element)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public abstract class Message : AbstractElement
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
private MessageModel _messageModel;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 构造函数
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="mm">Message实体对象</param>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public Message(MessageModel mm)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
this._messageModel = mm;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// Message实体对象
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public MessageModel MessageModel
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
get 乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)return _messageModel; }
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
set 乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){ _messageModel = value; }
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 执行抽象访问者的Visit()方法(从而执行抽象元素的方法)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="abstractVisitor">抽象访问者</param>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public override string Accept(AbstractVisitor abstractVisitor)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
return abstractVisitor.Visit(this);
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 获取Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public abstract List<MessageModel> Get();
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 插入Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public abstract bool Insert();
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

SqlMessage
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// Sql方式操作Message(ConcreteElement)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public class SqlMessage : Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 构造函数
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="mm">Message实体对象</param>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public SqlMessage(MessageModel mm)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            : 
base(mm)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 获取Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public override List<MessageModel> Get()
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            List
<MessageModel> l = new List<MessageModel>();
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            l.Add(
new MessageModel("SQL方式获取Message", DateTime.Now));
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
return l;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 插入Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public override bool Insert()
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
// 代码略
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
            return true;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

XmlMessage
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// Xml方式操作Message(ConcreteElement)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public class XmlMessage : Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 构造函数
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="mm">Message实体对象</param>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public XmlMessage(MessageModel mm)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            : 
base(mm)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern) 
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 获取Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public override List<MessageModel> Get()
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            List
<MessageModel> l = new List<MessageModel>();
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            l.Add(
new MessageModel("XML方式获取Message", DateTime.Now));
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
return l;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 插入Message
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public override bool Insert()
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
// 代码略
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
            return true;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

AbstractVisitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// 抽象访问者(Visitor)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public abstract class AbstractVisitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 执行抽象元素的方法
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="abstractElement">抽象元素</param>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public abstract string Visit(AbstractElement abstractElement);
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

InsertVisitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// Insert访问者(ConcreteVisitor)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public class InsertVisitor : AbstractVisitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 执行Message的Insert()方法
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="abstractElement">抽象元素</param>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public override string Visit(AbstractElement abstractElement)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            Message m 
= abstractElement as Message;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
return m.Insert().ToString() + "<br />";
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

GetVisitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// Get访问者(ConcreteVisitor)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public class GetVisitor : AbstractVisitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 执行Message的Get()方法
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="abstractElement">抽象元素</param>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public override string Visit(AbstractElement abstractElement)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            Message m 
= abstractElement as Message;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
return m.Get()[0].Message + " " + m.Get()[0].PublishTime.ToString() + "<br />";
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

Messages
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections.Generic;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Text;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
namespace Pattern.Visitor
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// Message集合(ObjectStructure)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
/// </summary>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    public class Messages
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
private List<Message> _list = new List<Message>();
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 添加一个Message对象
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="message">Message对象</param>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public void Attach(Message message)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            _list.Add(message);
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 移除一个Message对象
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="message">Message对象</param>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public void Detach(Message message)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            _list.Remove(message);
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/**//// <summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// 执行集合内所有Message对象的Accept()方法(执行抽象访问者的Visit()方法(从而执行抽象元素的方法))
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// </summary>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <param name="abstractVisitor">抽象访问者</param>
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
/// <returns></returns>

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        public string Accept(AbstractVisitor abstractVisitor)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
string s = "";
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
foreach (Message m in _list)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)                s 
+= m.Accept(abstractVisitor);
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)            
return s;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)


Test
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)using System;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Data;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Configuration;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Collections;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Web;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Web.Security;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Web.UI;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Web.UI.WebControls;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Web.UI.WebControls.WebParts;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using System.Web.UI.HtmlControls;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
using Pattern.Visitor;
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
public partial class Visitor : System.Web.UI.Page
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
protected void Page_Load(object sender, EventArgs e)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern){
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        Pattern.Visitor.Messages m 
= new Pattern.Visitor.Messages();
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        m.Attach(
new SqlMessage(new MessageModel("插入", DateTime.Now)));
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        m.Attach(
new XmlMessage(new MessageModel("插入", DateTime.Now)));
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        Response.Write(m.Accept(
new InsertVisitor()));
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)        Response.Write(m.Accept(
new GetVisitor()));
乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)    }

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)}

乐在其中设计模式(C#) - 访问者模式(Visitor Pattern)

运行结果
True
True
SQL方式获取Message 2007-5-27 15:01:53
XML方式获取Message 2007-5-27 15:01:53


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


OK
[源码下载]
上一篇:Python--数值类型


下一篇:JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面