.net的架构模式

网友投稿 249 2022-11-30

.net的架构模式

一:ADO.NET实现三层架构

不用三层的普通的查询写法:

string sql = string.Format("select * from Studnet where StuName like '%{0}%'", txtName.Text); string strconn = "server=.;database=MySc;uid=sa;pwd=123456"; SqlConnection conn = new SqlConnection(strconn); SqlDataAdapter da = new SqlDataAdapter("select * fromStuden", conn); DataSet ds = new DataSet(); try { da.Fill(ds); // dataGridView1.DataSource = ds.Tables[0]; DataTable dt = ds.Tables[0]; txtName.Text = dt.Rows[0]["Name"].ToString(); } catch (Exception) { throw; }

普通删除的写法:

SqlConnection conn = new SqlConnection("server=.;database=MySc;uid=sa;pwd=123456"); string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); string sql = "delect from Student where stNO=" + id; SqlCommand comm = new SqlCommand(sql,conn); conn.Open();

修改的普通写法:

string strsql = @"UPDATE Student SET [StuName]='0' WHERE [StuNO]={3}"; string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); string sql = string.Format(strsql, txtName.Text, id); SqlConnection conn = new SqlConnection("server=.;database=MySc;uid=sa;pwd=123456"); SqlCommand com = new SqlCommand(sql, conn); try { conn.Open(); com.ExecuteNonQuery(); //刷新数据 } catch (Exception) { throw; } finally { conn.Close(); }

一个简单的DbHelper:

private static SqlConnection conn = new SqlConnection("server=.;database=Mys,uid=sa;pwd=123456"); public static int ExecuteSQL(string strsql) { SqlCommand comm = new SqlCommand(strsql, conn); try { conn.Open(); return comm.ExecuteNonQuery(); } catch (Exception ex) { throw ex; } finally { conn.Close(); } } public static int GetDataTable(string strsql) { SqlDataAdapter da = new SqlDataAdapter(strsql, conn); DataSet ds = new DataSet(); try { da.Fill(ds); return ds.Tables[0]; } catch (Exception ex) { throw ex; } } ///

/// 返回一个单一的值 /// /// 传入的是select打头的sql语句(select count(*),select max(..)) /// 返回的是Object类型 public static object GetSingle(string strsql) { SqlCommand comm = new SqlCommand(strsql, conn); try { conn.Open; return comm.ExecuteScalar(); } catch (Exception ex) { throw ex; } finally { conn.Close(); } }

缺点:不是面向对象,客户端不了解后台数据也能完全的操作,而这个三层架构实现不了

解决方案: OOP实现

二:用OOP实现三层架构

private static IList GetStudentsBySQL(string strsql) { DataTable dt = DbHelper.GetDataTable(sql); IList result = new List(); for (int i = 0; i < dt.Rows.Count; i++) { Student student = new Student(); student.Sid = int.Parse(dt.Rows[i]["id"].ToString()); student.Sname = dt.Rows[i]["Name"].ToString(); result.Add(student); } return result; } ///

/// Id查询 /// /// /// public static Student GetStudentById(int id) { string sql = string.Format("select * from Studnet where stuno={0}", id); try { return GetStudentsBySQL(sql)[0]; } catch (Exception) { return null; } } /// /// 查询所有 /// /// public static IList GetAllStudent() { string sql = "select * from Studnet"; return GetStudentsBySQL(sql); } /// /// 姓名查询 /// /// /// public static IList GetStudentByName(string name) { string strsql = string.Format("select * from student where stuname like '%{0}%'", name); return GetStudentByName(strsql); }

三:应用抽象工厂+反射实现通用数据源的设计

一:解决思路:

1.利用工厂方法模式(多态)来封装 new SqlServerUser()所造成的变化

说明:工厂模式就是定义一个创建对象的接口,让子类来决定实例化那个类

2.抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类

面向对象的好处:可维护性,可复用,可扩展,灵活性

面向对象的原则:1.类的单一职责

2.开放--封闭原则(对扩展是开放的,对于更改是封闭的)

3.依赖倒转原则(针对接口编程,不要对实现编程)

4.里氏替换原则(子类型必须能够替换它们的父类型)

四:23种设计模式的分类:

一:创建型模式

1.简单工厂模式    2.工厂方法模式    3.抽象工厂模式     4.创建者模式    5.原型模式    6.单例模式

二:结构型模式

1.外观模式    2.适配器模式    3.代理模式    4.装饰模式  5.桥模式    6.组合模式    7.享元模式

三:行为型模式

1.模板方法模式      2.观察者模式     3.状态模式     4.策略模式     5.职责链模式      6.访问者模式      7.调停者模式    8.备忘录模式   9.迭代器模式    10.解释器模式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:QT 分页
下一篇:Windows系统下Eclipse搭建ESP32编译环境及安装过程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~