只是为了从字面上说明,这个是基于MVC来构建的。
接下去在View模块中,我新建一个View,员工管理的页面,我想这也是任何一个信息系统所必须要使用到的模块。
ViewStaffManager -- View
Staff -- Model
Staff -- StaffList
BaseController -- Control
Command -- Control
CommandGetStaff -- Control
以上是对这个项目演示的基本功能建立。
接下去,一部一部实现功能。
首先介绍业务对象,Model的开发。
以下是业务实体类
Code
using System;
using System.Collections.Generic;
using System.Text;
namespace Model
{
/// <summary>
/// 员工业务类演示。
///
/// <Developer>Ray Gu</Developer>
/// <DateTime>2009.04.12</DateTime>
/// </summary>
public class Staff
{
private string id;
/// <summary>
/// 唯一主键
/// </summary>
public string Id
{
get { return id; }
set { id = value; }
}
private string userName;
/// <summary>
/// 员工名称
/// </summary>
public string UserName
{
get { return userName; }
set { userName = value; }
}
private string tel;
/// <summary>
/// 联系电话
/// </summary>
public string Tel
{
get { return tel; }
set { tel = value; }
}
}
}
业务实体集合类
Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
namespace Model
{
/// <summary>
/// 员工对象集合类
///
/// 为了只是说明演示,所以做简化,不通过数据库访问来实现功能。
///
///
///
///
/// </summary>
public class StaffList : List<Staff>
{
public List<Staff> GetList()
{
// 该加载数据演示过程实质是通过数据库访问层,
获取数据,为简化演示,故只在虚拟数据集中添加数据
DataTable dt = new DataTable();
dt.Columns.Add("编号");
dt.Columns.Add("名称");
dt.Columns.Add("电话");
DataRow dr = dt.NewRow();
dr["编号"] = "100001";
dr["名称"] = "张三";
dr["电话"] = "057487301122";
dt.Rows.Add(dr);
dt.AcceptChanges();
Staff myStaff = null;
foreach (DataRow row in dt.Rows)
{
myStaff = new Staff();
// 实际开发中强烈不建议使用索引为数字的形式出现,对维护产生极大不便。
myStaff.Id = row[0].ToString();
myStaff.UserName = row[1].ToString();
myStaff.Tel = row[2].ToString();
}
this.Add(myStaff);
return this;
}
}
}
接下去,做控制器,控制器其实就是一个Command模式。
using System;
using System.Collections.Generic;
using System.Text;
namespace Control
{
public class Command
{
public abstract object Execute();
}
}
控制器执行基类。
Code
using System;
using System.Collections.Generic;
using System.Text;
namespace Control
{
public class BaseController
{
public object ExecuteCommand(Command myCommand)
{
return myCommand.Execute();
}
}
}
Code
using System;
using System.Collections.Generic;
using System.Text;
using Model;
namespace Control
{
public class CommandGetStaff : Command
{
public override object Execute()
{
StaffList list = new StaffList();
return list.GetList();
}
}
}
之所以要做控制器的实质就是第三者的作用,通过控制器来控制模型和视图的链接。
继续做下页面。
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Control;
using Model;
namespace View
{
public partial class ViewStaffManager : Form
{
BaseController control;
public ViewStaffManager()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
control = new BaseController();
CommandGetStaff getStaff = new CommandGetStaff();
this.dataGridView1.DataSource = (StaffList)control.ExecuteCommand(getStaff);
}
}
}
以上就是实例的基本思想。以及对Command模式和MVC模式的应用介绍。
在之后下一篇,我想介绍下单件模式在实际开发中的应用,也准备对反射工厂模式做一下演示。
我做这个演示的目的不是为了说明设计模式的概念,而是我自己对设计模式应用的举例。
当然实际项目中的复杂度高于该实例百倍。但是基本的核心思想就是如此。(本文由控件中国网转载)
|