http://blog.csdn.net/jyk/archive/2007/03/20/1535544.aspx
上一篇写了我常用的方法,这里想说一下我猜想的OOD的方法,之所以用猜想,是因为我没有用过OOD的方法,我也不知道我这么写对不对,所以用了“猜想”二字。
.aspx文件。和上一篇的应该没有什么区别。
代码:.aspx.cs文件,给属性赋值。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
代码:.cs文件(放在.aspx.cs里面也可以吧),“添加信息”类的实现。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
保存()方法的实现代码就省略了,实现方式太多了,
可以使用SqlConnection,SqlCommand等来添加;
可以调用SQLHelp来添加,可以组合SQL语句,也可以使用存储过程;
还可以调用数据访问层(这样就变成三层的方式了吧)。
这是我感觉上的OOD,也不知道对不对。不对的话请及时指正,以免误导大家!
注:这里的类使用了中文,一是从来没有用过中文的变量、类名,这次想试一试;二是感觉中文的好像能更好理解一下吧。
再猜一下三层的方法。
UI层:绘制控件,应该也是一样的。然后给实体类赋值。
逻辑层:......
数据层:组合SQL语句(或者给存储过程的参数赋值),然后调用SQLHelp保存数据(或者使用SqlCommand等对象保存数据)。
什么?你问逻辑层怎么写了一堆点呀。是呀,猜不出来这里要写什么,我也不瞎猜了,免得挨板砖:)。
另外两层写的也不知道对不对,不对的话请及时指正。
总结:
三个方法,用了两个帖子表达了一下。下面横向对比一下。
1、需求发生变化。(增加功能)
一开始文章不多,不需要分类,现在文章多了要分一下类。显然要加一个字段(另一个说法:实体类加一个属性)来保存分类信息。我们来看看这三个方法都需要改那些地方。
.aspx里面的修改都是一样的,加一个下拉列表框显示信息的分类,让用户来选择。
.aspx.cs 、.cs
我的方法:str1 数组加一个元数{a},来保存分类字段的名称,str 数组也加一个元数{b},来保存用户选择的分类。需要验证的话再加一个验证。
OOD的方法:add3() 里面增加一行赋值的代码{b};“添加信息”类里面加一个属性{a};保存() 方法里面作适当的修改{c}。
三层的方法:实体类加一个属性{b};赋值的地方加一行代码{a};数据层组合SQL语句(或者给存储过程的参数赋值)需要修改,然后调用SQLHelp保存数据(或者使用SqlCommand等对象保存数据)还是需要修改{c}。
最后是逻辑层,由于猜不出来写些什么,所以也不知道需不需要修改。
添加一个字段的时候,我的方法只需要{a}、{b}两个修改,而另两个还需要{c}的修改。三层中可能还要修改一下逻辑层。
{a}、{b}、{c}三处需要修改的代码量大家都清楚吧,我就不多说了。
2、表名字段名需要修改。
这个应该是不常发生的,顺便说一下吧。
表名、字段名,在我的方法里面分别只出现了一次,修改一个地方就可以了。
另两个方法呢,组合SQL语句(或者存储过程)需要修改,至于属性(实体类)要不要修改我就不知道了。如果属性(实体类)修改了,那么赋值的地方也需要修改,验证的地方也需要修改。
3、更换数据库。
这个是三层拿手的吧(便于应对的吧)。我们看看需要修改那些地方。
我的方法,更换一个“我的数据访问层”。“我的数据访问层”是通用的,每一种数据库都有一个专用的“我的数据访问层”与之对应。换数据库换一个dll文件基本就可以了。
三层呢?需要改一下数据层的代码。
实际中我只经历了一次更换数据库的情况,换了一个DLL文件,由于Access和MS SQL的SQL的标准不太一样,又修改了一些不太“兼容”的SQL语句。代码(C#)上基本没有什么修改。
至于访问层嘛,也只是把 SqlClient.Sql 替换成了 OleDb.OleDb 。使用 IDE 的查找、替换就完成了。
先写这么多。由于我没有写过OOD的程序,也没有写过三层的程序,文章里面的对OOD、三层的说法如果有不对的地方,请多多指教!