现在的位置: 首页 > 综合 > 正文

乐在其中设计模式(C#) – 建造者模式(Builder Pattern)

2011年11月04日 ⁄ 综合 ⁄ 共 3889字 ⁄ 字号 评论关闭
[索引页]
[源码下载]

乐在其中设计模式(C#) - 建造者模式(Builder Pattern)

作者:webabcd

介绍
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

示例
用同样的构建过程创建Sql和Xml的Insert()方法和Get()方法。

MessageModel

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Builder
{
    
/// <summary>
    
/// Message实体类
    
/// </summary>

    public class MessageModel
    
{
        
/// <summary>
        
/// 构造函数
        
/// </summary>
        
/// <param name="msg">Message内容</param>
        
/// <param name="pt">Message发布时间</param>

        public MessageModel(string msg, DateTime pt)
        
{
            
this._message = msg;
            
this._publishTime = pt;
        }


        
private string _message;
        
/// <summary>
        
/// Message内容
        
/// </summary>

        public string Message
        
{
            
get return _message; }
            
set { _message = value; }
        }


        
private DateTime _publishTime;
        
/// <summary>
        
/// Message发布时间
        
/// </summary>

        public DateTime PublishTime
        
{
            
get return _publishTime; }
            
set { _publishTime = value; }
        }

    }

}

SqlMessage

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Builder
{
    
/// <summary>
    
/// Sql方式操作Message
    
/// </summary>

    public class SqlMessage
    
{
        
/// <summary>
        
/// 获取Message
        
/// </summary>
        
/// <returns></returns>

        public List<MessageModel> Get()
        
{
            List
<MessageModel> l = new List<MessageModel>();
            l.Add(
new MessageModel("SQL方式获取Message", DateTime.Now));

            
return l;
        }


        
/// <summary>
        
/// 插入Message
        
/// </summary>
        
/// <param name="mm">Message实体对象</param>
        
/// <returns></returns>

        public bool Insert(MessageModel mm)
        
{
            
// 代码略
            return true;
        }

    }

}

XmlMessage

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Builder
{
    
/// <summary>
    
/// Xml方式操作Message
    
/// </summary>

    public class XmlMessage
    
{
        
/// <summary>
        
/// 获取Message
        
/// </summary>
        
/// <returns></returns>

        public List<MessageModel> Get()
        
{
            List
<MessageModel> l = new List<MessageModel>();
            l.Add(
new MessageModel("XML方式获取Message", DateTime.Now));

            
return l;
        }


        
/// <summary>
        
/// 插入Message
        
/// </summary>
        
/// <param name="mm">Message实体对象</param>
        
/// <returns></returns>

        public bool Insert(MessageModel mm)
        
{
            
// 代码略
            return true;
        }

    }

}

Operation

using System;
using System.Collections.Generic;
using System.Text;

using System.Reflection;

namespace Pattern.Builder
{
    
/// <summary>
    
/// 操作(Product)
    
/// </summary>

    public class Operation
    
{
        
private string _type;
        
private Dictionary<stringstring> _dictionary;

        
/// <summary>
        
/// 构造函数
        
/// </summary>
        
/// <param name="type">产品类型</param>

        public Operation(string type)
        
{
            _dictionary 
= new Dictionary<stringstring>();
            
this._type = type;
        }


        
/// <summary>
        
/// 索引器
        
/// </summary>
        
/// <param name="key"></param>
        
/// <returns></returns>

        public string this[string key]
        
{
            
get return _dictionary[key]; }
            
set { _dictionary[key] = value; }
        }


        
/// <summary>
        
/// 获得结果
        
/// </summary>
        
/// <returns></returns>

        public string GetResult()
        
{
            Assembly assembly 
= Assembly.Load("Pattern.Builder");

            MethodInfo methodGet 
= assembly.GetType("Pattern.Builder." + _dictionary["get"].Split('|')[0]).GetMethod(_dictionary["get"].Split('|')[1]);
            
object objGet = methodGet.Invoke(assembly.CreateInstance("Pattern.Builder." + _dictionary["get"].Split('|'

抱歉!评论已关闭.