分层开发的一点想法
一直按照petshop的分层来写.
但是写到后面,让别人用的时候自己很心虚.
比如一个工作人员表的model层.
public class lx_worker
{
public lx_worker()
{}
private int _id;
private string _w_name;
...
public lx_worker(int id,string w_name)
{..}
public int id
{
get{return _id;}
}...
}
那么 lx_worker myworker=new lx_worker();
代表什么?一个没有意义的对象在程序中充斥着这种代码.
如果不小心,比如没有 myworker.w_name=...给工作人员添加名字.这样的操作.就进行插入操作.那肯定是出问题的。字段很多要一个一个检查.
所以感觉应该privite lx_worker()
{}
默认的构造函数应该去掉.
而去使用自定义函数
public lx_worker(int id,string w_name)
{..}
让 实体类都是有意义的类.
所以这也就让我们 dal 层添加数据的方法,不能再是
void add(lx_worker myworker)
因为添加的时候.都没有一个有意义的实体.都是默认构造函数的实体.
我感觉应该 myworker add(string name){}结果是返回一个有意义的实体.
还有比如有些字段是不能更改比如用户登陆名字.这个就必须是只读的。如果存在一个默认的构造函数.那么new 了之后.那些只读字段怎么办?只读只能是初始化副直的.
分层写代码,按照一个表,一个实体对象的写法.总会有些操作感觉哪里有问题。
比如工作人员表格.又添加了一个工作人员更详细的表格,比如worker_detail
那么我们删除工作人员的时候,并没有把工作人员的详细信息删除.
(当然,数据库有级连删除会一起删除,但那属于数据库设计.不代表程序设计)
所以一个表对应一个实体又是不合理的。
以 woker组合detail 新加一个类.
goodworker
{
privite worker;
privite detail
}
而对应的方法 删除 .就是
del(int id)
{
(事务处理)
dal.detail.del(id);
dal.worker.del(id);
}
这又有一个问题.如果和工作人员的信息又有新的添加.比如工资信息.
那么我们又必须频繁修改goodworker的model和dal层.
感觉应该有些还是组合和接口会比较好点.
//model
public class workermodel
{
属性
workermodel(...)自定义构造函数
{
}
}
interface iworkeraction
{
del
{}
}
//dal
class worker:iworkeraction
{
//构造函数用model的构造函数
workermodel myworker;
worker(.....)
{
workermodel(...)自定义构造函数
}
overwriter del()
{}
}
//bll
abstruct abworker:worker
{
继承基类,
组合内部对象的方法 形成给外部的方法
}
程序中:abworker myworker=new worker(.....)
myworker.del(..)
不知道这样用会不会以后修改起来会比较好点。
自己感觉在平常的小程序中。这样还是会稍嫌麻烦.