Attribute(特性),怎么用才更好?
2010-08-06 09:49
323 查看
前几年:
2008年的某一天,我坐火车去北京。硬卧上铺,一晚上就到北京了。爬到上铺之后发现,旁边上铺有一老兄抱着一个笔记本,一开始还以为是看电影呢,仔细一看才发现——老天呀,居然在写代码!
这老兄也太工作狂了,当时可是晚上九点多了呀。屏幕里的IDE和vs有一点像,但又不是。问过了之后才知道,原来是大名鼎鼎的java(具体叫啥记不清楚了,好像是j2ee,对java相当的不熟,就是那个意思了)。遇到java高手了,不能错失良机,要问问心中的疑问。
于是我就问他“听说java都在用Hibernate,需要把一些信息记录在XML里?”。
老兄说“是呀,以前都这么用。”
“以前?怎么是以前?”
“因为用XML记录信息不方便。”
“那么现在呢?”
“现在用特性了,把需要的信息放在特性里面。”
……
后面又闲聊了一些。
2008年的事情,对话是记不准确了,大体的意思就是这样,一开始用XML,后来用特性。当时我就觉得,俺们.net程序员怎么总是拾人家的牙恵?
现在:
这几天看到了一些关于特性和实体类的文章,中心思想就是用特性记录一些想要记录的信息,用特性把实体类和XX联系起来。
我们先来看看这一篇,C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
http://blog.csdn.net/RonoTian/archive/2008/09/08/2900714.aspx
给出的示例如下:
public class Person
{
private string _Name;
private int _Age;
private string _Sex;
[ColumnID(2000020)]
public string Name
{
get { return this._Name; }
set { this._Name = value; }
}
[ColumnID(2000040)]
public int Age
{
get { return this._Age; }
set { this._Age = value; }
}
[ColumnID(2000030)]
public string Sex
{
get { return this._Sex; }
set { this._Sex = value; }
}
}
简洁多了吧。什么?你问,这个特性不易读看不出来是什么不好。这个嘛,属性名称是给程序员看的,而特性是给程序看的,只要不写错就可以。
符合三个规则:
最小获知,只需要知道字段编号。
依赖倒置,依赖字段编号,而不是具体的信息。
单一职责,字段名可以变化,字段大小也可以变,验证方式也可以变,只要字段编号不变,那么就不需要改实体类。
===========================================
图1
图2,这是一个视图
图3,这个也是视图,其实和上面的是一个视图,只是显示的字段不同
图4,这是一个表里的记录,角色、功能节点与字段编号的关系。
2008年的某一天,我坐火车去北京。硬卧上铺,一晚上就到北京了。爬到上铺之后发现,旁边上铺有一老兄抱着一个笔记本,一开始还以为是看电影呢,仔细一看才发现——老天呀,居然在写代码!
这老兄也太工作狂了,当时可是晚上九点多了呀。屏幕里的IDE和vs有一点像,但又不是。问过了之后才知道,原来是大名鼎鼎的java(具体叫啥记不清楚了,好像是j2ee,对java相当的不熟,就是那个意思了)。遇到java高手了,不能错失良机,要问问心中的疑问。
于是我就问他“听说java都在用Hibernate,需要把一些信息记录在XML里?”。
老兄说“是呀,以前都这么用。”
“以前?怎么是以前?”
“因为用XML记录信息不方便。”
“那么现在呢?”
“现在用特性了,把需要的信息放在特性里面。”
……
后面又闲聊了一些。
2008年的事情,对话是记不准确了,大体的意思就是这样,一开始用XML,后来用特性。当时我就觉得,俺们.net程序员怎么总是拾人家的牙恵?
现在:
这几天看到了一些关于特性和实体类的文章,中心思想就是用特性记录一些想要记录的信息,用特性把实体类和XX联系起来。
我们先来看看这一篇,C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
http://blog.csdn.net/RonoTian/archive/2008/09/08/2900714.aspx
给出的示例如下:
public class Person
{
private string _Name;
private int _Age;
private string _Sex;
[ColumnID(2000020)]
public string Name
{
get { return this._Name; }
set { this._Name = value; }
}
[ColumnID(2000040)]
public int Age
{
get { return this._Age; }
set { this._Age = value; }
}
[ColumnID(2000030)]
public string Sex
{
get { return this._Sex; }
set { this._Sex = value; }
}
}
简洁多了吧。什么?你问,这个特性不易读看不出来是什么不好。这个嘛,属性名称是给程序员看的,而特性是给程序看的,只要不写错就可以。
符合三个规则:
最小获知,只需要知道字段编号。
依赖倒置,依赖字段编号,而不是具体的信息。
单一职责,字段名可以变化,字段大小也可以变,验证方式也可以变,只要字段编号不变,那么就不需要改实体类。
===========================================
图1
图2,这是一个视图
图3,这个也是视图,其实和上面的是一个视图,只是显示的字段不同
图4,这是一个表里的记录,角色、功能节点与字段编号的关系。
相关文章推荐
- Attribute(特性),怎么用才更好?
- Attribute(特性),怎么用才更好? —— 字段编号被误解了
- Attribute(特性),怎么用才更好? —— 字段编号被误解了
- C#,什么是Attribute?什么特性?怎么被调用?
- 关于request.setAttribute如果里面存的是类似于javabean的样子你怎么办?
- C语言宏怎么玩儿得更好?
- C# 特性(Attribute)详细介绍
- C# 特性(Attribute)入门(一)
- C# 特性(Attribute)入门教程
- JavaScript特性(attribute)、属性(property)和样式(style)
- ASP.NET Web API自身对CORS的支持: EnableCorsAttribute特性背后的故事
- 引导好评弹窗怎么做才能让用户体验更好?
- Attribute class invalid for tag text according to TLD这个struts错误怎么解决啊
- DOM元素的特性(Attribute)和属性(Property)
- mvc中利用Attribute特性来进行进行简单的登陆验证
- [导入]C# 特性(Attribute)入门
- request.setAttribute()怎么用的?
- .NET Attribute(特性)的作用与用法——几句话解决Attribute使用的困惑
- 怎么更好的与人相处
- 一个小型的项目团队,怎么组合更好一些