基于.NET平台的分层架构实战
- 格式:pdf
- 大小:846.79 KB
- 文档页数:71
【开发】.NET三层架构简单解析这篇⽂章本来应该很早就写出来的,但是⼀直苦于⾃⼰的精神能⼒有限,⽽且已经到了我们学校的考试周,所以时间上还是有点紧迫。
关键的⼀点就是,找不到合理的思路来写,思路没有的话,就算是再好的素材,也写不来⼤家喜欢的⽂章。
之前已经写过关于.NET三层架的两篇⽂章了,⼀篇是和。
如果⼤家有兴趣的话,可以去读⼀读。
当然了,这两篇⽂章的内容,⼤部分都不是⾃⼰的,⾃⼰也是看了别⼈的博⽂,然后⾃⼰总结⼀下,拿过来⾃⼰⽤罢了。
这次的⽂章主要是⾃⼰亲⾃使⽤这些知识做了⼀个项⽬(我们学校资环学院的院⽹站),然后拿出来跟⼤家分享⼀下。
也不要期望博主能够写出多么有⽔平的⽂章,我还是学⽣(⼤三),我也是在学习的过程中,写博客之不过是想记录⾃⼰学习过程中的点滴和记录⾃⼰的进步,如果能够顺便的帮助别⼈学习就更好了。
同时也希望⼤家能够多给我提意见。
⾮常感谢 @ ,@,@ 等博友给我提出的宝贵的修改意见。
也希望⼤家在阅读本博⽂的时候,如果有什么问题,或者疑问及时的给我留⾔沟通,⼤家⼀起探讨。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------对于三层架构来说,主要是使⽤设计模式的思想,对于项⽬的各个模块实现"⾼内聚,低耦合"的思想。
这⾥就不做详细的介绍了,如果⼤家有兴趣,可以阅读软件⼯程和设计模式相关⽂章。
对于三层架构来说,就是使⽤类,把我们在做项⽬的过程中,可能需要反复操作数据库,反复的使⽤某个⽅法等等,可能就是操作的参数不同。
如果我们如果在每次使⽤的时候,都去编写相应的代码,⽆疑会增加程序员的负担。
.NETCore优秀的应用逻辑分层框架设计目前公司系统多个应用分层结构各不相同,给运维和未来的开发带来了巨大的成本,分层架构看似很简单,但保证整个研发中心都使用统一的分层架构就不容易了。
那么如何保证整个研发中心都使用统一的分层架构,以达到提高编写代码效率、保证工程统一性的目的?这里给出个人的规划设计,希望对你有所启发。
1.分层目标•简单易用:少即是多,哪怕应届生进来也能很快上手•结构统一:不管是新系统还是旧系统结构的是一样的。
•提高效率:提高开发和运维效率,减少维护和学习成本2.分层架构介绍先简单介绍当前两种比较流行的分层架构体系:领域分层架构和传统三层架构。
2.1领域分层架构领域架构:包括仓储层、领域层、应用服务层、表现层和基础公共层,如下图所示:2.2传统三层架构另一种是相对传统地分为三层:包括数据层、业务逻辑层和表现层,如下图所示:2.3二者区别?在早期做三层架构的时候,大都以表来驱动,在做领域架构的时候,大都以业务逻辑来驱动,两者的区别确实比较明显,但到了现在,如果都以业务逻辑为中心,那么两者并没有本质区别。
携程公司采用了第二种分层法,他们希望把分层做得极简,也就是说,哪怕刚毕业进入公司的员工,在分层时基本上也不会乱。
相对于第一种分层法,第二种分层法简单得多。
每一个应用的代码量都不应该很大,一旦工程变得过大,就会把它适当拆分,而不是全部放在一单体应用里。
总之,分层越简单,整个软件结构就越清晰,代码就越容易统一。
把工程做得极简,才有利于复制,有利于业务的快速构建,有利于规模化,使系统稳定可靠。
3.统一分层规范以上两种逻辑分层如何做选型?我们要回到分层的目的上来评估,我们的目标是简单、统一、高效。
所以传统的三层架构很好的满足了我们的需求。
而领域驱动开发,对DDD有一定的学习成本,同时对旧系统的历史包袱,比如数据库,我们无法做到面向领域编程,我们更多的要面向数据库编程。
所以,当前敏捷框架比较适合想从老系统迁移的,但是有数据库历史包袱的团队。
基于.NET平台的三层架构软件框架的设计与实现高扬【期刊名称】《计算机技术与发展》【年(卷),期】2011(21)2【摘要】The object-oriented and components software development platform is almost essential things in information systems development. Three layers structure and software reuse technology are integrated in platform to construct a feature-rich and flexible software framework. It is popular in application system development. A software framework for information systems, which is based on the ideas of the software reuse and three layers structure, was designed and implemented in C # under the. NET platform. It can make it easy to generate a MIS prototype when developing an information system, finally improve the efficiency of information systems software development and the level of software standardization.%面向对象和构件的软件开发平台,几乎是现在信息系统开发的必备之物,通过在平台之上融入三层架构及复用技术来构建一个功能丰富,结构灵活的软件框架也成为现在应用系统开发的主流思想.在介绍分析软件复用技术和三层架构思想的基础之上,研究并提出了基于.NET环境的三层架构信息系统软件框架设计的基本思路和方法,同时运用C#言实现了该软件框架的代码自动生成器.信息系统开发时通过运用该软件框架代码生成器可以很方便的生成一个MIS雏形.从而能有效的提高信息系统软件的开发效率和软件标准化及构件化水平.【总页数】5页(P77-80,85)【作者】高扬【作者单位】贵州大学计算机科学与信息学院,贵州,贵阳,550025【正文语种】中文【中图分类】TP315【相关文献】1.基于.NET平台的三层架构软件框架的设计研究 [J], 王萌;平台下基于LINQ三层架构的应用 [J], 林勤花3.基于.Net平台三层架构C/S模式装备管理信息系统设计与实现 [J], 方宗奎;王鑫4.基于.NET平台可复用软件框架的设计与实现 [J], 王孝明;胡健;陆坤;周伟5.基于.NET平台的三层架构的改进设计 [J], 温倩雯;周斌;何坚因版权原因,仅展示原文概要,查看原文内容请购买。
.NET平台分层架构开发中泛型实现通用数据访问层张金波【期刊名称】《计算机与数字工程》【年(卷),期】2012(40)11【摘要】基于.NET平台的分层架构项目的开发过程中,数据访问层(Data Access Layer,以下简称DAL)的开发是必不可少的,当项目中存在很多数据表的时候,DAL 的开发会成为一个不停编写重复代码的工作,这是非常浪费时间的,通用DAL则能够较好的解决这种问题,而且通用DAL可以在基于.NET平台分层架构开发的项目中进行非常方便的重用.在微软提出泛型之后,类型也可以作为一种参数来进行指定,为实现通用DAL提供了高效可用的技术手段.%To programming data access layer is essential in layered architecture software project which based on . NET platform. The work will become a work of writing duplicate code incessantly when there are many tables in the project. It is very waste of time. Universal data access layer can solve this problem well,and it is very easy to be reused in layered architecture software project which based on . NET platform. Type can be specified as a parameter after the generic been proposed by Microsoft. It provides efficient and available technical means for the realization of universal data access layer.【总页数】3页(P73-75)【作者】张金波【作者单位】攀钢集团研究院有限公司科技信息中心攀枝花617000【正文语种】中文【中图分类】TP393【相关文献】1.可复用数据访问层的实现及其在企业信息r系统开发中的应用 [J], 莫勇;俞云三层架构中一种对数据访问层进行解耦的快速开发模型及实现 [J], 梁启恒平台下基于LINQ分层架构的实现 [J], 张雪梅4.泛型在通用表格编辑器开发中的应用 [J], 马子博;赵波5.浅谈基于.NET分层开发架构中数据访问层的设计 [J], 方丹因版权原因,仅展示原文概要,查看原文内容请购买。
在.NET框架下开发三层结构数据库应用系统第1 章:三层结构在企业中的应用三层:表示层:1.数据展示(显示数据)。
2.接收数据。
用于显示数据和接收用户输入的数据,为用户提供一种交互式操作界面。
(一般为Windows应用程序或Web应用程序) 业务逻辑层:1.业务逻辑处理。
2.数据传递。
是表层和数据访问层之间通信的桥梁,主要负责数据的传递和处理。
(1.规则对数据进行加工和处理。
2.与相邻的表示层和数据库访问层进行数据交换。
)数据访问层:主要实现对数据的保存和读取操作。
数据访问,可以访问关系数据库、本文件或是XML文档等。
数据访问层通常为类库。
二层结构的局限性:1. 难以适应需求变化。
2. 不易维护。
3. 安全性低。
三层之间的依赖关系:表示层依赖业务逻辑层。
业务逻辑层依赖数据访问层。
表示层只允许引用业务逻辑层,不允许直接引用数据访问层。
各层项目间不允许循环引用。
1. 接收用户的请求,根据用户的请求去通知业务逻辑层;业务逻辑层收到请求,首先对请求进行阅读审核,然后将请求通知数据库访问层或直接返回给表示层;数据访问层收到请求后便开始访问数据库。
2. 数据访问层通过对数据库的访问得到请求的结果,并把请求结果通知业务逻辑层;业务逻辑层收到请求结果,首先对请求结果进行阅读审核,然后将请求结果通知表示层;表示层收到请求结果,并将结果展示给用户。
搭建三层结构基本框架的步骤:1. 搭建表示层。
2. 搭建业务逻辑层。
3. 搭建数据访问层。
4. 添加各层之间的相互依赖。
第2 章:用实现三层结构DataSet:在内存中存在的临时数据库。
(表的集合(列,行,约束)以及表之间的关系的集合)DataSet的主要作用:三层之间数据传递的载体。
在三层结构中,DataSet的构建与解析工作主要在表示层、数据访问层,业务逻辑层主要对DataSet中的数据进行加工、处理和传递。
(DataSet是整个三层结构中数据传递的介质)。
1、表示层使用DataSet需要做的两件事:(1)将DataSet中的数据展示给用户。
基于.NET的三层架构桌面应用程序框架设计与实现作者:陈莉莉来源:《软件导刊》2015年第09期摘要:介绍并分析三层架构的基本思想,基于Microsoft Visual Studio 2010/.NET Framework 4.0平台,提出开发三层架构winform应用程序的基本思路,并探讨三层架构winform应用程序的搭建过程。
关键词:软件框架;三层架构;桌面程序DOIDOI:10.11907/rjdk.151596中图分类号:TP319文献标识码:A 文章编号文章编号:16727800(2015)0090103001 软件框架框架是一种微体系结构,为特定领域内的软件系统提供完全可以实现的模板,是一个将要被扩展或复用的子系统[ 1 ]。
软件框架(Software framework),通常是指为实现某个业界标准或完成特定基本任务的软件组件规范,也指为实现某个软件组件规范时,所要求的基础功能的软件产品。
软件框架是实现大粒度复用的重要途径,其往往针对特定领域,同时支持设计复用和代码复用[ 2 ]。
良好的软件框架或结构设计将为软件项目开发带来较大益处,特别是在软件稳定性、灵活性、可维护性和扩展性等方面。
在软件开发中,开发人员可根据实际需求对框架进行对象实例化与代码重构,从而快速形成“半成品”的应用系统程序,然后通过对业务流程的再分析和再设计使整个应用系统得以实现[ 3 ]。
以面向对象信息系统桌面程序为例,整个系统功能是由各对象间相互协作完成的,虽然这些对象间的具体交互由企业实际业务流程决定,但可从系统中提取软件框架结构,对该系统进行分层框架设计,实现软件最大粒度的可重用性[ 3 ]。
本文将结合.NET平台所提供的相关技术,搭建一个具有三层架构设计思想、面向对象和可复用的桌面应用程序软件开发框架。
2 框架设计目前,应用程序的实现一般划分为3个层次,从低向高分别为:数据访问层、业务逻辑层、表示层。
数据访问层实现对数据库记录的操作,这对于特定DBMS是固定的;业务逻辑层调用数据访问层实现业务逻辑,该层是关键层,如果用户业务需求发生变更,可在该层修改,业务逻辑层有很多独立方法;表示层调用业务逻辑层实现用户功能,只要业务逻辑层有这个功能即可调用,表示层只需要提供输入、输出和提示等[ 4 ]。
基于NET结构的软件系统框架的设计与实现基于.NET结构的软件系统框架的设计与实现摘要:本文以教务管理系统为例,分析了基于.NET结构的软件系统框架的特点,介绍了采用、实体类、LINQ To SQL、实体框架等四种开发技术实现基于.NET结构的软件系统框架。
阐述了开发过程中的存在问题,并介绍了LINQ To SQL、实体框架等微软最新技术。
关键词:软件系统框架;LINQ To SQL; 实体框架;三层架构中图分类号:TP311 文献标识码:A0 引言在构建大型的、复杂的企业级项目时,通常需要大量的代码。
考虑到细化开发人员的分工、有利于代码维护和代码复用等因素,通常需要将整个应用分为若干个层次。
其中,最流行的是三层架构程序设计方法。
分层架构体现了“分而治之”的思想:通过将一个大的复杂的问题分解成许多小的相对简单的问题,然后逐个解决。
随着高等学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。
高业务逻辑层(BLL)和数据访问层(DAL)。
三层的作用分别如下:表示层:为用户提供交互操作界面,这一点不论是对于Web还是WinForm都是如此,就是用户界面操作。
我们网站展示给用户看的界面。
业务逻辑层:负责关键业务的处理和数据的传递。
复杂的逻辑判断和涉及到数据库的数据验证需要在此做出处理。
根据传入的值返回用户想得到的值,或者处理相关的逻辑。
数据访问层:见名知意,负责数据库数据的访问。
主要为业务逻辑层提供数据,根据传入的值来操作数据库。
用实现三层结构应用系统时,DataSet的主要作用是三层之间数据传递的载体。
DataView是DataTable的动态数据视图,我们使用DataView的SortRowFilter属性实现数据的排序、过滤。
用实现三层结构应用系统时,数据访问层主要使用的类有:SqlConnection类,实现数据库连接。
SqlCommand类,执行SQL命令。
SqlDataReader类,读取数据。
基于.NET平台的分层架构实战(一)——综述(本文来自/,唐军平于2008年12月18日星期四晚12:34整理完)通过浏览博客园的文章发现,很多朋友对分层架构特别感兴趣,刚好我刚做完的毕业设计就是专门研究.NET平台上分层架构的(题目叫“基于.NET平台的分层架构与设计模式应用研究”)。
通过做这篇论文,我对分层架构有了一定的了解,所以,就萌发了想写一个文章系列,详述一下分层架构。
然而,论文的理论性太强,不适合在网上发布,尤其不适合初学者理解,所以,我想在这个文章系列中,少讲理论,而是通过做一个完整的案例来讨论分层架构的基本方法,这样会直观很多。
希望在这个文章系列的写作过程中,能和朋友们一起学习,一起进步。
为了让朋友们把主要精力放在理解分层架构而不是案例本身,我准备选择一个相对简单的留言本系统作为Demo,这个系统的名字就叫做NGuestBook。
初步计划将这个文章系列分为以下几篇:1.综述2.系统需求分析及数据库设计3.架构概要设计4.实体类的实现5.接口的设计与实现6.依赖注入及IoC的设计与实现7.数据访问层的第一种实现——Access+动态生成SQL语言8.数据访问层的第二种实现——SQLServer+存储过程9.数据访问层的第三种实现——基于NBear框架的ORM实现10.业务逻辑层的实现11.表示层的实现12.使用 AJAX框架对表示层进行改进13.总结当然,以上只是初步计划,在写文章的过程中可能会根据具体情况适当调整,但是内容大体就是这些。
这个文章系列不会对所用到的技术进行详细讲解,具体请参考相关文献,阅读文章前最好能对以下技术有一个了解:1.C#语言3.设计模式4.关系数据库基础知识5.软件架构基本原则与软件工程基础知识6.基于NBear框架的ORM技术7.JavaScript,Ajax AJAX框架(特别是客户端编程)9.HTML,CSS,标准化布局另外,本文章系列是基于.NET framework2.0框架平台进行讨论,3.5平台的新特性(如LINQ、 MVC等)不会讨论,IDE使用Visual Studio 2005,数据库会用到SQLServer2005 Express和Access2003。
目 录一、 综述 (1)二、 需求分析与数据库设计 (2)需求分析: (2)数据库设计: (3)三、 架构概要设计 (3)架构基本原则: (3)逐层调用原则及单向调用原则 (3)针对接口编程,而不是针对实现编程 (4)依赖倒置原则 (4)封装变化原则 (5)开放-关闭原则 (5)单一归属原则 (5)层次划分: (5)职责划分: (5)模块划分及交互设计: (5)四、 实体类的设计与实现 (6)AdminInfo.cs: (7)MessageInfo.cs: (8)CommentInfo.cs: (9)五、 接口的设计与实现 (10)由需求分析,列出主要UI (11)由UI识别业务逻辑操作 (11)经过整理,可得以下接口操作: (12)IAdminBLL.cs: (12)IMessageBLL.cs: (13)ICommentBLL.cs (14)由业务逻辑确定数据访问操作 (15)IAdminDAL.cs: (15)IMessageDAL.cs: (17)ICommentDAL.cs: (18)六、 依赖注入机制及IoC的设计与实现 (19)配置 (20)实现缓存操作辅助类 (20)CacheAccess.cs: (20)封装依赖注入代码 (21)DependencyInjector.cs: (21)实现工厂 (23)DALFactory.cs (23)BLLFactory.cs (24)七、 数据访问层的第一种实现:Access+动态生成SQL语言 (25)第一步,我们要将Access数据库搭建完成,具体做法如下。
(25)第二步,我们要进行一些配置。
(25)第三步,新建一个工程。
(26)1.编写数据访问助手类 (26)AccessDALHelper.cs: (26)2.实现具体的数据访问操作类 (28)AdminDAL: (28)八、 对数据访问层第一种实现 (32)首先是IDataReaderToEntityStrategy接口 (33)IDataReaderToEntityStrategy.cs: (33)然后以Admin为例,看一下策略的具体实现: (34)AdminDataReaderToEntityStrategy.cs: (34)下一个,是重构后的AccessDALHelper,增加了三个方法。
(35)AccessDALHelper.cs: (35)最后以Admin为例,看一下简化后的数据访问层实现: (39)AdminDAL.cs: (39)九、 数据访问层的第二种实现:SQLServer+存储过程 (41)创建新工程 (42)创建数据库 (42)编写存储过程 (42)PROCEDURE [dbo].[Pr_InsertAdmin] (42)PROCEDURE [dbo].[Pr_DeleteAdmin] (43)PROCEDURE [dbo].[Pr_UpdateAdmin] (43)PROCEDURE [dbo].[Pr_GetAdminByID] (44)PROCEDURE [dbo].[Pr_GetAdminByNameAndPassword] (44)PROCEDURE [dbo].[Pr_GetAdminByName] (44)PROCEDURE [dbo].[Pr_GetAllAdmin] (45)编写数据库辅助类 (45)SQLServerDALHelper.cs: (45)实现数据访问层 (47)AdminDAL.cs: (47)十、 数据访问层的第三种实现:基于NBear框架 (51)1.创建实体设计工程 (52)EntityDesign.cs (52)2.创建NBear专用实体类及配置文件 (53)3.编写转换器 (54)AdminConvertor.cs (54)4.实现数据访问层 (55)AdminDAL.cs (55)十一、 业务逻辑层的实现 (58)1.建立工程 (58)2.配置依赖注入 (58)3.编写散列加密工具类 (59)Encryptor.cs (59)4.实现业务逻辑层 (59)AdminBLL.cs (60)十二、 表示层的实现 (61)1.设计界面 (62)Login.aspx: (62)Common.css (64)Login.aspx.css (64)2.表示逻辑 (65)Login.aspx.cs: (65)基于.NET平台的分层架构实战一、综述通过浏览博客园的文章发现,很多朋友对分层架构特别感兴趣,刚好我刚做完的毕业设计就是专门研究.NET平台上分层架构的(题目叫“基于.NET平台的分层架构与设计模式应用研究”)。
通过做这篇论文,我对分层架构有了一定的了解,所以,就萌发了想写一个文章系列,详述一下分层架构。
然而,论文的理论性太强,不适合在网上发布,尤其不适合初学者理解,所以,我想在这个文章系列中,少讲理论,而是通过做一个完整的案例来讨论分层架构的基本方法,这样会直观很多。
希望在这个文章系列的写作过程中,能和朋友们一起学习,一起进步。
为了让朋友们把主要精力放在理解分层架构而不是案例本身,我准备选择一个相对简单的留言本系统作为Demo,这个系统的名字就叫做NGuestBook。
初步计划将这个文章系列分为以下几篇:1.综述2.系统需求分析及数据库设计3.架构概要设计4.实体类的实现5.接口的设计与实现6.依赖注入及IoC的设计与实现7.数据访问层的第一种实现——Access+动态生成SQL语言8.数据访问层的第二种实现——SQLServer+存储过程9.数据访问层的第三种实现——基于NBear框架的ORM实现10.业务逻辑层的实现11.表示层的实现12.使用 AJAX框架对表示层进行改进13.总结当然,以上只是初步计划,在写文章的过程中可能会根据具体情况适当调整,但是内容大体就是这些。
这个文章系列不会对所用到的技术进行详细讲解,具体请参考相关文献,阅读文章前最好能对以下技术有一个了解:1.C#语言3.设计模式4.关系数据库基础知识5.软件架构基本原则与软件工程基础知识6.基于NBear框架的ORM技术7.JavaScript,Ajax AJAX框架(特别是客户端编程)9.HTML,CSS,标准化布局另外,本文章系列是基于.NET framework2.0框架平台进行讨论,3.5平台的新特性(如LINQ、 MVC等)不会讨论,IDE使用Visual Studio 2005,数据库会用到SQLServer2005 Express和Access2003二、需求分析与数据库设计在实际的项目中,需求分析和数据库的设计是很重要的一个环节,这个环节会直接影响项目的开发过程和质量。
实际中,这个环节不但需要系统分析师、软件工程师等计算机方面的专家,还需要相关领域的领域专家参与才能完成。
但是,在这个文章系列中,所要使用的Demo仅仅是一个例子,而且其业务极为简单,因此,这里并不是真正的需求分析和数据库设计,而是将Demo的需求和数据库罗列至此,使朋友们对Demo有一个大体的了解,方便后续文章中开发过程的理解。
需求分析:这个项目是一个留言本,其业务极为简单,现将其描述如下。
1.任何访问者可以进行留言,留言完成后,不会立即显示正文,而是要经过管理员验证后才可显示。
2.任何访问者可以对留言发表评论,未通过验证的留言不可以评论。
3.管理员可以对留言进行回复(这个回复不同于评论,是直接显示在正文下面,而且是一个留言只能有一个回复),并可对留言与评论实行删除,以及对留言进行通过验证操作。
4.管理员分为超级管理员和普通管理员。
超级管理员只有一个,负责对普通管理员实行添加、删除操作。
普通管理员可偶多个,负责对留言的管理,并可以修改自己的登录密码。
这个项目的用例图如下:数据库设计:设计数据表之前,首先进行实体和关系的识别与确定。
通过需求分析,可以观察得出,本项目的实体有:管理员(不包括超级管理员),留言,评论。
本项目的关系有:留言与评论间的一对多关系。
进一步,数据库各表的设计如下:管理员表(TAdmin)ID int 管理员ID NotNull 主键,自增Name varchar(20) 登录名 NotNullPassword varchar(50) 登录密码 NotNull 使用MD5加密留言表(TMessage)ID int 留言ID NotNull 主键,自增GuestName varchar(20) 留言者用户名 NotNullGuestEmail varchar(100) 留言者E-mail NullContent text 留言内容 NotNullTime datetime 发表留言时间 NotNullReply text 回复 NullIsPass varchar(10) 是否通过验证 NotNull评论表(TComment)ID int 评论ID NotNull 主键,自增Content text 评论内容 NotNullTime datetime 发表评论时间 NotNullMessageID int 所属留言的ID 外键三、架构概要设计本文主要是对将要实现的架构进行一个总体的描述,使朋友们对这个架构有个宏观上的认识。
这篇文章理论性的东西会偏多一点,从下篇开始,将进行实际项目的开发。
这篇文章的许多内容摘自我的毕业论文。
架构基本原则:这里,将描述一些在这个架构设计中的基本原则,其中很多都是经典的设计原则,不过针对分层架构的特点,用我自己的语言进行了描述。
其中也有我自己提出的原则。
逐层调用原则及单向调用原则现在约定将N层架构的各层依次编号为1、2、…、K、…、N-1、N,其中层的编号越大,则越处在上层。
那么,我们设计的架构应该满足以下两个原则:1.第K(1<K<=N)层只准依赖第K-1层,而不可依赖其他底层。
2.如果P层依赖Q层,则P的编号一定大于Q。
其中第一个原则,保证了依赖的逐层性,及整个架构的依赖是逐层向下的,而不能跨层依赖。
第二个原则,则保证了依赖的单向性,及只能上层依赖底层,而不能底层反过来依赖上层。
针对接口编程,而不是针对实现编程这里所指的接口,不是特指编程语言中的具体语言元素(如C#中由Interface定义的语言接口),而是指一种抽象的,在语义层面上起着接合作用语义体。
它的具体实现,可能是接口,可能是抽象类,甚至可能是具体类。
我认为,从不同的视角,接口可以有以下两种定义:1.接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。
体现了自然界“如果你是……则必须能……”的理念。
2.接口是在一定粒度视图上同类事物的抽象表示。
注意这里我强调了在一定粒度视图上,因为“同类事物”这个概念是相对的,它因为粒度视图不同而不同。