你必须要知道的架构知识~第二章 代码是否面向对象,要看你的继承怎么用
儿子今天玩的有点晚了,所以今天的文章写的也有点晚了,呵呵!
从标题上可以知道,今天主要来讲继承,事实上是“继承”在项目架构中有没有用,如果有用,那应该如何去用的问题,一说到继承就肯定会说两个东西,基类(父类)和派生类(子类),在架构中,我们这样定义一个基类:当很多类型有相同的属性或相似的行为时,我们应该把它们的公共部分提取到一个新的类型中,这个类我们称为它们的基类,基类在架构中多为抽象类,即本身只定义和简单的实现,具体的调用和复杂逻辑由它的子类去实现和复写。
在N层架构中,UI层,Service层及Data层都应该有自己的基类,而基类的主要作用就是将通用的部分进行抽象,这样在功能扩展,代码维护等方面都会变得方便,当然也更符合面向对象的原则。
UI层的基类:
/// <summary>/// Controller基ù类à/// </summary>public class BaseController : System.Web.Mvc.Controller{/// <summary>/// 数y据Y统3一?操ù作÷对?象ó/// </summary>protected IDataContext _db { get; set; }/// <summary>/// 用?户§操ù作÷权¨限T/// </summary>protected int UserOperatorRole { get; set; }/// <summary>/// 当±前°登?陆?的?用?户§ID/// </summary>protected long Current_UserID { get; set; }}
/// <summary>/// 数y据Y库a基ù类à/// </summary>public abstract class DataBase{/// <summary>/// 数y据Y库a对?象ó/// </summary>protected DataContext _db = new DataContext();/// <summary>/// 统3一?提á交?动ˉ作÷/// </summary>protected virtual void SubmitChanges(){try{_db.SubmitChanges();}catch (System.Data.Linq.ChangeConflictException ex){throw;}}}
在使用它们时,通过是用一个具体功能类去继承它们,以便来使用它们公开的属性和方法,如下:
我们看到上面的HomeController类型继承了BaseController类型,它的构造方法提供了带参和空参的方法重载,这样写的好处是更好的实现代码的松耦合,提供代码的稳定性及可测试性,即,当我们使用空参构造类实例时,它会建立默认的数据访问对象,而如果我们希望建立一个“测试”的内存数据对象时,可以使用第二个构造方式进行建立对象。
从本篇文章开始,将会出现大量的代码,以便去说明问题,希望符合大家的胃口。
你必须要知道的架构知识~第二章 代码是否面向对象,要看你的继承怎么用相关推荐
- Python爬虫核心知识-第二章:2.2 爬虫urllib.parse模块
Python爬虫核心知识 第二章:2.2 爬虫urllib.parse模块 2.2 爬虫urllib.parse模块 Python中的urllib.parse模块中,提供了很多用来解析和重组URL的函 ...
- JavaScript核心知识第二章---事件高级(含大量代码分析)
前言 ❤️ 一个人有多重的才华,骨子里就会刻上多大重量的谦卑 ❤️ JavaScript核心知识第二章---事件高级 一.JavaScript 事件高级 (1)注册事件(绑定事件) 1.1 注册事件概 ...
- 关于c语言的基本知识,第二章_关于C语言的基本知识.ppt
第二章_关于C语言的基本知识.ppt 函数 函数说明 例2.3 分析下面的运行结果. main() { printf("\"123\"\\\"456\" ...
- FPGA基础知识----第二章 FPGA 开发流程
第二章 FPGA 开发流程 FPGA 的设计流程就是利用 EDA 开发软件和编程工具对 FPGA 芯片进行开发的过程.原理图和HDL(Hardware description language,硬件描 ...
- 《Python编程 从入门到实践》 一、基础知识 第二章 变量和简单的数据类型
为了所谓的效率哈(其实是因为本人比较懒,emm...),这里直接从第二章开始学习,但是考虑一些小白同学还是给大家简短介绍一下第一章. 第一章主要介绍环境的搭建和一些安装问题 1.环境的搭建可参考:Py ...
- Kotlin学习笔记 第二章 类与对象 第一节类与继承(补)
参考链接 Kotlin官方文档 Kotlin docs | Kotlin 本系列为参考Kotlin中文文档 kotlin官方文档2020版.pdf-其它文档类资源-CSDN下载 第二章 第一节 类与继 ...
- 学习C语言必须知道的理论知识(第二章-算法)
数据结构:在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,就是数据结构. 算法:要求计算机进行操作的步骤,就是算法. 算法+数据结构=程序 算法的特性:1.有穷性. 2.确定性. 3.有 ...
- 计算机网络基础知识第二章要点
OSI第一层------物理网络 一.标准的拓扑结构 总线型拓扑结构.星型拓扑结构.环形拓扑结构 二.最新的网络拓扑结构 1.混合型(星型总线型拓扑结构.星型环形拓扑结构) 2.网状结构(完全网状拓扑 ...
- DVB-S相关知识第二章-卫星接收锁频参数介绍
目录 前言 波段 C波段 Ku波段 度数 频点 符号率 极化方式
最新文章
- Python virtualenv激活与退出虚拟环境
- O(n* (logn)^2 )的Shell排序——转自Matrix67的博客
- python执行循环内存变大_python – 为什么我的循环在每次迭代时需要更多内存?...
- Python实战从入门到精通第二十一讲——构建一个模块的层级包
- 软件设计师--面向对象技术
- android modbus 串口,手机Modbus 安卓Modbus调试软件
- 汽车电子研究报告:下一个苹果产业链
- 如何做 ASO 优化?
- day20 网络编程(上)
- 【全开源+免费更新】doodoo.js创建项目教程
- 服务器网页图片显示不了怎么办啊,网页图片显示不出来怎么办 网络故障解决【详解】...
- php实现个人微信给自己好友发送消息
- 机器学习——支持向量机——硬间隔与支持向量
- git 如何将主分支(master)合并到子分支上
- 训练时评估指标无变化,且预测值都一样
- C语言学习(十一)之字符输入/输出
- 深度学习-兼顾工作与孩子
- matplotlib 中深色颜色选取
- SuperMap工作空间文件sxw的文件格式说明
- Git和GitHub学习笔记 V2.0(更新中...)
热门文章
- 火箭技术术语_仿真优化火箭发动机 3D 打印制造工艺
- mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解
- Golang——文件创建和写入、OpenFile追加写入、Open读取文件、ReadBytes缓冲区读取、os.Args、flag
- r语言c5.0要求因子输出,R语言中因子的创建与使用
- python spark hadoop_使用Scala或Python列出存储在Hadoop HDFS上的Spark群集中可用的所有文件?...
- 分享一个用Axure写的PRD文档
- 为什么不懂技术的人可以做产品经理?
- 互联网日报 | 6月30日 星期三 | 叮咚买菜正式登陆纽交所;微软发布Win 11首个预览版;三星宣布3nm芯片成功流片...
- 编写一个程序,找到大于平均值的项的数目
- 这是一张超级长长长长的长图·····