C#基础--三层架构与接口--纯概念,无代码示例

三层架构

一般命名规范:

三层架构:

  • 数据访问层(DAL):一般只编写基本的增、删、查、改方法,不能出现业务逻辑。作用:解析对象---组合SQL;封装对象上传。
  • 业务逻辑层(BLL):一般只编写业务逻辑代码,根据用户的需求决定如何调用数据访问层的方法,不能出现任何SQL语句及数据访问代码,只能调用DAL中的方法,不能调用其他任何层的方法。作用:处理业务逻辑;传递数据。
  • 用户界面层(UI):一般只编写用户操作信息、数据验证、数据展示代码;只能调用BLL中的方法,不能调用DAL中的方法。作用:封装对象---向下传;解析对象---展示数据。

三层架构优缺点:

  • 分层架构的优势:分离开发人员关注的内容;项目需求变化时程序模块可以无损替换;提高代码的复用性,当由C/S架构变为B/S架构时转换成本最低。
  • 分层架构的缺点:代码量大,实现复杂。

经验总结:大中型团队项目建议使用三层架构,小型项目建议使用两层或不分层,只划分模块。

接口

接口与抽象类类似,接口侧重的是功能点的约束,是功能说明。团队开发中将相关功能定义为接口,由不同的人去实现,实现完之后按照一定的要求把实现的模块组装起来,就是一个完整的系统,大大提高了团队并行开发的能力。

抽象类和抽象方法侧重于继承,而接口侧重于功能定义与约束。不能多重继承但是可以实现多个接口。

接口定义规范:

  • 使用关键字interface定义,接口类命名一般“I”开头。
  • 接口中的属性、方法等,只做一个声明,而没有任何实现。
  • 使用该接口的类必须实现接口中的所有方法,且方法的定义必须和接口中的方法定义的规范完全一致,因此我们也说接口具有强制性。
  • 接口中的属性、方法默认都是public。

我们通常说一个类继承一个类,实现了一个或多个接口。一个类同时用继承与接口时,父类写在最前面。

接口应用总结

  • 接口的应用场合:如果某一个功能需求变化较多,应使用接口保证系统的可扩展性;如果团队并行开发,可以使用接口来规范对象的使用。
  • 接口编写规范:接口成员只能是一个声明;实现接口的类必须全部实现接口中规定的属性、方法。
  • 特别说明:接口的使用不是必须的,要根据用户的需求来决定。

接口多态

使用接口实现多态:一个接口必须被两个或两个以上类实现;接口实现类必须转换成接口类型使用(即方法形参是接口类型,实际调用传递的接口实现类类型)。

接口和抽象类对比:

转载于:https://www.cnblogs.com/EasonDongH/p/8097887.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
负责业务逻辑的类都必须实现这个接口,业务逻辑类BusinessImpl实现接口Business,BusinessImpl.java的示例代码如下: //******* Business.java************** public class BusinessImpl implement Business { private SaveData db; public void DiSaveDate (SaveData db) { this.db = db; } … //根据注入的存储类,存储数据 public void saveData() { … db.saveData(); … } } 编写测试类TestBusiness,TestBusiness.java的示例代码如下: //******* TestBusiness.java************** public class TestBusiness { private Business business = new BusinessImpl(); … //根据注入的存储类,存储数据 public void opraData() { … business. DiSaveDate (new XMLData()); business. saveData (); … } } 如果要完成依赖关系注入的对象,必须实现Business接口。 构造注入 构造注入是指在接受注入的类中定义一个构造方法,并在参数中定义需要注入的类。 (1)为了让类Business接受XMLData的注入,需要为它定义一个构造方法,来接受XMLData的注入。Business.java的示例代码如下: //******* Business.java************** public class Business { private SaveData db; public Business (SaveData db) { this.db = db; } … //根据注入的存储类,存储数据 public void saveData() { … db.saveData(); … } } (2)编写测试类TestBusiness,TestBusiness.java的示例代码如下: //******* TestBusiness.java************** public class TestBusiness { private Business business = new Business(new XMLData()); … //根据注入的存储类,存储数据 public void opraData() { … business. saveData (); … } } 即通过构造函数来完成依赖注入。 从前面对这三种依赖注入的方式中可以看出:其实所有的依赖注入都离不开抽象的支持,也就是说只有"面向接口编程",才能够实现依赖注入。 读者可能还会有疑惑:虽然具体的存储方式和业务逻辑无关了,可不是还要在调用业务逻辑的类里来改变具体的存储方式吗?这样一来,不是还要改代码吗?看起来面向接口编程也挺简单的,那Spring又为开发人员提供了哪些帮助呢?其实,Spring为开发人员提供了调用业务逻辑类的具体方式,也就是说,Spring不再需要开发人员编写调用具体调用业务逻辑的类,而是通过配置文档来实现对业务逻辑的调用,如果具体的存储方式发生了变化,开发人员只需要改变相应的配置文档即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值