关于三层结构的疑惑
为了学习三层结构的用法,在做一个学校班级管理的系统遇到的一些问题。
我是这样设计的
这是第一个类Student,记录学生信息
using System;
namespace Demo
{
public class Student
{
private int _id;
private string _name;
private int _age;
public int ID
{
get{ return _id; }
set{ _id = value; }
}
public string Name
{
get{ return _name; }
set { _name = value; }
}
public int Age
{
get{ return _age; }
set{ _age = value; }
}
public Student( string name, int age )
{
Name = name;
Age = age;
}
}
}
这是第二个类Class,记录班级信息
using System;
namespace Demo
{
public class Class
{
private Data _data;
private int _id;
private string _name;
private System.Collections.ArrayList _students;
public int ID
{
get{ return _id; }
set{ _id = value; }
}
public string Name
{
get{ return _name; }
set { _name = value; }
}
public int StudentCount
{
get{ return _students.Count; }
}
public System.Collections.ArrayList Students
{
get{ return _students; }
}
public Class( string name, int age )
{
_data = new Data();
_students = new System.Collections.ArrayList();
Name = name;
}
public void Add( Student student )
{
Students.Add( student );
}
public void Save()
{
for( int i=0;i < Students.Count; i++ )
{
Student student = (Student)Students[i];
_data.Save( ID, Name, student.ID, student.Name, student.Age );
}
}
}
}
这是第三个类Data,负责对数据库操作
using System;
namespace Demo
{
public class Data
{
public Data()
{
}
/// <summary>
/// 向数据库写入数据
/// </summary>
public void Save( int classID, string className, int studentID, string studentName, int studentAge )
{
}
}
}
我是打算这样做应用,主程序只负责人机界面的交互,主程序中的DATAGRID与一个
DataTable绑定,DataTable与一个Class类对应,类Student和Class负责数据逻辑,类Data负责与数据库的读写。
疑惑一:这样做的初衷不想让主程序中与数据库产生关系,但是取DataTable列的时候又要涉及到列名,这样又要用到数据库表的列名,这样就矛盾了。
疑惑二:当界面上DataGrid中每一个单元格的内容改变时,需要马上更新类Student的实例,由这个实例来做一些逻辑判断,这样显得非常麻烦。
疑惑三:一个窗口所占内存中有了一个DataTable和一个Class,那么同样的信息消耗的内存是两倍。
如何解决以上三个问题呢。
------解决方案--------------------1)维护一个数据