直接讲主题.
有个论坛用户的数据库表,表里有两个Bit类型字段fbitIsAdmin和fbitIsFunctioner,分别表示是否为管理员和是否为版主.
现在要设计对应的用户Model.
一种方法是直接映射数据库字段,即在Model中设置两个Boolean属性来表示对应的字段值.
另一种方法是只为Mode设置l一个String类型的属性"UserType",表示用户类型,根据数据库字段来设置其值为"管理员"或"版主"或"普通用户".
比较一下这两种方法.
主要是对数据读写(DAL层),数据绑定(WEB层),数据判断(BLL层)三方面来对比.
数据读写(DAL层):第一种方法因为属性类型与数据库匹配,所以对数据库的读写操作方便.
第二种方法则需要中间的转换.
数据绑定(WEB层):第一种方法需要对属性判断来决定绑定的值.
第二种方法则直接绑定.
数据判断(BLL层):第一种方法判断Boolean类型值,较快.
第二种方法判断String类型值,较慢.
结论:
在表示层需要频繁绑定数据时,用第二种方法效率高.反之就用第一种方法.
把这个例子抽象出来.就是当数据库字段值不能符合表示层的数据显示时,选择将数据转换放置在哪一层来实现的问题.
再引申一点,就是在设计Model前,一定要对整个程序的数据流要了解透彻,才能设计出适合的Model.到了项目后期再去改Model是非常困难的.