一: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[];
}
catch (Exception ex)
{ throw ex;
} } /// <summary>
/// 返回一个单一的值
/// </summary>
/// <param name="strsql">传入的是select打头的sql语句(select count(*),select max(..))</param>
/// <returns>返回的是Object类型</returns>
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<Student> GetStudentsBySQL(string strsql)
{
DataTable dt = DbHelper.GetDataTable(sql);
IList<Student> result = new List<Student>();
for (int i = ; 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;
}
/// <summary>
/// Id查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static Student GetStudentById(int id)
{
string sql = string.Format("select * from Studnet where stuno={0}", id);
try
{
return GetStudentsBySQL(sql)[];
}
catch (Exception)
{ return null;
}
} /// <summary>
/// 查询所有
/// </summary>
/// <returns></returns>
public static IList<Student> GetAllStudent()
{
string sql = "select * from Studnet";
return GetStudentsBySQL(sql); } /// <summary>
/// 姓名查询
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static IList<Student> 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.解释器模式

.net的架构模式的更多相关文章

  1. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  2. Hibernate(1)——数据访问层的架构模式

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 数据库的概念.逻辑.数据模型概念 应用程序的分层体系结构发展 MVC设计模式与四层结构的对应关系 持久层的设 ...

  3. Android 四大组件 与 MVC 架构模式

    作为一个刚从JAVA转过来的Android程序员总会思考android MVC是什么样的? 首先,我们必须得说Android追寻着MVC架构,那就得先说一下MVC是个啥东西! 总体而来说MVC不能说是 ...

  4. iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构

    本文由CocoaChina译者lynulzy(社区ID)翻译 作者:Bohdan Orlov 原文:iOS Architecture Patterns 在 iOS 中使用 MVC 架构感觉很奇怪? 迁 ...

  5. 《企业应用架构模式》(POEAA)读书笔记

    原文地址:<企业应用架构模式>(POEAA)读书笔记作者:邹齐龙(技术-5013 什么是架构 Rolph Johnson认为:架构是一种主观上的东西,是专家级的项目开发人员对系统设计的一些 ...

  6. 面向对象架构模式之:领域模型(Domain Model)

    一:面向对象设计中最简单的部分与最难的部分 如果说事务脚本是 面向过程 的,那么领域模型就是 面向对象 的.面向对象的一个很重要的点就是:“把事情交给最适合的类去做”,即:“你得在一个个领域类之间跳转 ...

  7. iOS 架构模式-MVVM

    iOS 架构模式-MVVM MVVM Model-View-ViewModelMVVM 其实是MVC的进化版,他将业务逻辑从VC中解耦到ViewModel,实现VC的瘦身. 做一个简单的登录判断: 创 ...

  8. iOS - MVP 架构模式

    1.MVP 从字面意思来理解,MVP 即 Modal View Presenter(模型 视图 协调器),MVP 实现了 Cocoa 的 MVC 的愿景.MVP 的协调器 Presenter 并没有对 ...

  9. Android IOS WebRTC 音视频开发总结(二二)-- 多人视频架构模式

    本文主要介绍多人视频会议服务端架构方式,文章来自博客园RTC.Blacker,转载必须说明出处,欢迎关注个人微信公众号blacker,更多详见www.rtc.help 随着移动互联网的迅速发展,很多公 ...

  10. 浅谈MVC、MVP、MVVM架构模式的区别和联系

    MVC.MVP.MVVM这些模式是为了解决开发过程中的实际问题而提出来的,目前作为主流的几种架构模式而被广泛使用. 一.MVC(Model-View-Controller) MVC是比较直观的架构模式 ...

随机推荐

  1. 11、JPA-JPQL

    /** * JPQL,Java Persistence Query Language 的简称.是一种和 SQL 类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的 SQL 查询,从而屏 ...

  2. Log4j Threshold属性指定输出等级

    有时候我们需要把一些报错ERROR日志单独存到指定文件 ,这时候,Threshold属性就派上用场了: Threshold属性可以指定日志level Log4j根据日志信息的重要程度,分OFF.FAT ...

  3. HDU - 3980 Paint Chain(SG函数)

    https://vjudge.net/problem/HDU-3980 题意 一串长度为n的柱子,每个人只能给连续的珠子涂色,涂过的不能再涂,不能涂的人就输了,问最后谁获胜. 分析 第一个人先涂m个, ...

  4. HTML5视频播放插件Video.js使用详解

    一.Video.js简介 Video.js 是一个开源的 Html5 jquery 视频插件,这个插件可以用来处理 Flash 视频,它还是一个多平台支持的产品. Moreover,YouTube,V ...

  5. Linux - 系统基础操作

    wall # 给其它用户发消息 whereis ls # 查找命令的目录 which # 查看当前要执行的命令所在的路径 clear # 清空整个屏幕 reset # 重新初始化屏幕 cal # 显示 ...

  6. 第16月第23天 atos

    1. grep --after-context=2 "Binary Images:" *crash xcrun atos -o zhiniao_adhoc_stg1.app.dSY ...

  7. 在css中控制图像的大小

    可在CSS中利用width属性和height属性控制一个图像得到大小,就像控制其他任何盒子的大小一样. <html> <head> <title>TODO supp ...

  8. SpringMVC——SpringMVC简介

    Spring web mvc 和Struts2 都属于表现层的框架,它是Spring 框架的一部分,我们可以从Spring 的整体结构中看得出来:

  9. 2018-2019-2 网络对抗技术 20165227 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165227 Exp1 PC平台逆向破解 实验内容及步骤 实验一:直接修改程序机器指令,改变程序执行流程 知识要求:Call指令,EIP寄存器,指令跳转的偏移 ...

  10. ICPC World Finals 2019 题解

    [A]Azulejos 题意简述: 有两排瓷砖,每排都有 \(n\) 个,每个瓷砖有高度 \(h_i\) 和价格 \(p_i\) 两种属性. 你需要分别重新排列这两排瓷砖,使得同一排的瓷砖满足价格不降 ...