
程序设计
文章平均质量分 60
面向对象程序设计、原则、范例
guoyp2126
心上悟,事上磨
展开
-
软件模块之间耦合度的强弱排序
高内聚、低耦合是软件设计中非常关键的概念。耦合度越低,两个模块之间相互影响越小,独立性越强,越容易维护和扩展。以下由耦合度由高向低做一说明,在软件设计中尽量降低模块之间的耦合度。内容耦合:一个模块直接操作另外一个模块的数据,称为内容耦合。如:模块A有一个方法,直接读取模块B的一个数据变量c进行下一步操作,此时开发模块B的程序员将c变量删除或改名,则模块A直接崩溃。举个例子,甲盖房子时,把自家的梁架在邻居乙的柱子上,邻居乙拆自家房子时,甲的房子倒了。开发软件时绝不允许这种事情发生,但有些新手就能给你写出来原创 2021-03-01 20:13:19 · 10605 阅读 · 5 评论 -
面向对象概念总结(三)
什么是UML?统一建模语言,这种语言是一种程序设计语言,与软件开发语言无关(如:C++、Java、C#等),是软件设计者和软件开发者之间交流的语言。它是有一组图形符号组成的图,类似建筑工程中的设计图纸,程序员根据相应的图,就能写出与设计相符合的代码。UML中的图总共有13种,最常用的图只有3种,分别是用例图、类图和顺序图,其中用例图是用于需求获取和分析工具,通过类图和顺序图就能指导程序员编写代码,同时通过对代码做反向工程,获得的类图和顺序图就可以了解程序员的代码是如何编写的。静态类图详细说明:https.原创 2021-03-31 20:52:58 · 271 阅读 · 0 评论 -
面向对象概念总结(二)
什么是继承?继承是一种类与类的关系,是子类继承父类的属性和行为,使得子类具有与父类相同的属性、相同的行为。继承的目的是为了实现代码的复用。被继承的类叫做基类或父类,继承后产生的新类叫派生类或子类,继承实现了面向对象模块的层次性。除了C++允许多继承外,大部分开发语言仅支持单继承,即一个类仅可以拥有一个父类。使用继承关系必须了解父类子类的执行顺序,代码参考:https://blog.youkuaiyun.com/guoyp2126/article/details/113823759什么是耦合?如果两个类之间存在依.原创 2021-03-30 18:13:29 · 201 阅读 · 0 评论 -
面向对象概念总结(一)
面向对象技术产生的意图和动机面向对象技术是在第二次软件危机的背景下产生的,主要解决软件的可维护性和可扩展性问题。面向对象技术所有的概念、机制、原理、原则均服务这个目标面向对象程序运行机制?面向对象程序的机制是通过对象之间通过互发消息和方法调用完成,如:建筑工地中工人甲完成瓦工的工作,工人乙完成钢筋加工工作;工人甲给工人乙发送消息需要某型号的钢筋,工人乙就开始进行钢筋的加工,将加工好的钢筋发送给工人甲。在面向对象程序中工人甲、工人乙就是完成建筑工程中的对象,工人乙具备加工钢筋手艺的一个方法,工人甲给工.原创 2021-03-29 21:59:39 · 1471 阅读 · 0 评论 -
面向对象中的发消息是什么
高层模块:指的是调用方,如A类中调用B类实例的方法,则称A所在的类为高层模块发消息:实际就是方法调用,如:A的实例中调用B实例的方法,就是A给B发送消息,消息名就是B中方法名,消息参数就是方法参数抽象:指的是接口或抽象类抽象方法:只定义了名称和参数,但没有实现的方法具体类:能够创建程序运行中实例对象的类...原创 2021-03-11 11:51:38 · 894 阅读 · 0 评论 -
类的划分
为了更好地帮助设计人员进行类的识别与设计,将类划分边界类、操作类、实体类三种,这三种类具有各自的设计要点。边界类:为完成人机交互而产生的界面类。操作类:提取为完成某一任务具有相同特征操作而产生的类,如JDK中的HashSet、myBatis中sqlSession等;实体类:是数据的载体,用于传递信息而设计的类。...原创 2021-03-06 21:44:12 · 1128 阅读 · 0 评论 -
面向对象编程类的内聚性
高内聚、低耦合是软件设计中非常关键的概念。在面向对象程序设计中类的划分时,类的内聚性越高,其封装性越好,越容易复用,以下由内聚性由高到低做一说明。偶然内聚或巧合内聚(Coincidental):内内的各成分之间没有关联,只是把分散的功能合并在一起;类A内有BCDE四个方法,这四个方法均为public方法,功能含义上各自独立。前端开发api,将不同模块的api放在一起,就是偶然耦合。var api = { //登录 getCaptcha: (param) => get(apiBase原创 2021-03-03 17:11:20 · 1136 阅读 · 0 评论 -
什么是软件开发模式
软件开发模式又称开发范型、风范;具体描述如下开发过程遵循的步骤:如面向过程的开发模式是对特定问题执行过程自顶向下层层分解,并定义成由一系列步骤构成的算法,落实到可执行的代码上。面向对象开发模式首先考虑的是参与到问题对象上(实体),为完成任务各个对象如何进行通讯协作,最后进一步将对象封装可以执行方法,一个对象封装的方法并不是为某一项任务服务的。表示和解决问题的成分:面向过程模式使用的函数调用,基本成分是函数;面向对象模式使用的是对象之间通讯协作(消息)完成的,基本成分包括类、接口、消息。得到问题的结构原创 2021-02-25 15:23:56 · 1136 阅读 · 0 评论 -
面向对象设计原则——合成复用原则
概念尽量使用合成/聚合,而不是使用继承实现复用。所谓的合成/聚合是指一个对象里持有另外一个类的对象,通过调用这些对象的方法得到复用已有功能的目的。如:报文解译程序中,按照继承复用可以设计为:子类调用父类的方法即可完成水文报文解译、气象解译中通用方法;子类中一定包含了父类的方法,这个叫继承复用。按照合成/聚合原则设计为:水文协议和气象协议中,持有编码和位制转换对象,通过调用对象方法即可完成复用。一个加密程序也要使用ASCII的转换、数据位制转换,就没办法使用拓展继承是静态复用,通过聚合复用是原创 2021-02-25 14:44:22 · 420 阅读 · 0 评论 -
面向对象设计原则——迪米特法则
概念迪米特法则解决类与类之间耦合度问题,如果类A调用了B类的某一个方法,则这两个类就形成了一种紧耦合的方式,当B类这个方法发生变化时,一定会影响A类的执行结果。迪米特法则要求每一个类尽可能少的与其他类发生关系,也就是尽可能少的让其他类发生变化时,对其代码的执行结果产生的影响降到最低。典型情况:A类调用B类的方法,B类和C类是一种关联关系,如果A类通过B类所持有的C类对象直接调用C类的方法,则A类和C类同时拥有强耦合的关系。代码如下:public class B { public C c = n原创 2021-02-25 14:05:15 · 344 阅读 · 1 评论 -
面向对象设计原则——接口隔离原则
概念小接口原则,即每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。如下图所示定义了一个接口,包含了5个方法,实现类A用到了3个方法、实现类B用到了3个方法,类图如下:类A没有方法4、方法5,却要实现它;类B没有方法2、方法3,但还是要实现这两个方法,不符合接口隔离原则。改造为将其拆分为三个接口,实现方式改为下图所示,符合接口隔离原则:实现面向对象机制中一个类可以实现多个接口,通过多重继承分离,通过接口多继承(实现)来实现客户的需求,代码更加清晰易维护。如网上商城系统中,封装原创 2021-02-22 17:42:46 · 281 阅读 · 0 评论 -
面向对象设计原则——单一职责原则
概念不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,否则就应该把类拆分。交杂不清的职责将使得代码牵一发而动全身,导致代码混涩难懂,不易修改、难以扩展和复用。如:以前开发C/S程序中的胖客户端程序,就是将人机交互逻辑、业务加工处理逻辑和数据库操作逻辑混合在一起。实现单一职责原则是进行类的划分和封装的基本原则,进行类的具体抽象。尽量做到,类的功能单一和清晰化。根据机能划分,使用封装来创建对象之间的分界层,让设计者可以在分界层的一侧进行修改,而不会对另一侧产生不良的影响,从而实现层次原创 2021-02-22 16:45:09 · 433 阅读 · 0 评论 -
面向对象设计原则——依赖倒置原则
概念依赖倒置原则要求依赖抽象,不要依赖具体;抽象的稳定性决定了系统的稳定性,因为抽象是不变的,依赖于抽象是面向对象设计的精髓。示例参考:要依赖于抽象,不要依赖于具体拓展控制翻转(IOC):里氏替换原则解决了子类可以替换父类的问题,但是子类在什么时候创建,由谁创建就是依赖倒置原则要解决的问题。对象使用前,必须创建具体的对象,如A类中调用了B类的方法,则在A类里面需要创建B的实例对象,则A依赖于B。现在让A依赖于B的父类(接口),A不创建B实例,而是把创建实例的权限交给容器,由容器创建实例给A,容器给原创 2021-02-21 17:19:39 · 550 阅读 · 0 评论 -
面向对象设计原则——里氏替换原则
概念里氏替换原则是任何基类出现的地方,子类一定可以替换它;是建立在基于抽象、多态、继承的基础复用的基石,该原则能够保证系统具有良好的拓展性,同时实现基于多态的抽象机制,能够减少代码冗余。实现里氏替换原则要求我们在编码时使用基类或接口去定义对象变量,使用时可以由具体实现对象进行赋值,实现变化的多样性,完成代码对修改的封闭,扩展的开放。如:商城商品结算中,定义结算接口Istrategy,该接口有三个具体实现类,分别为PromotionalStrategy (满减活动,两百以上百八折)、RebateStra原创 2021-02-21 17:03:52 · 219 阅读 · 0 评论 -
面向对象设计原则——开闭原则
概念开闭原则是面向对象程序设计的总原则,直接面对面向对象程序的目标扩展性和可维护性,要求对扩展开放,对修改关闭;即在不修改原有代码的情况下改变模块的行为。实现开闭原则的实现策略主要在面向对象的封装性和多态性的基础上,利用面向对象的其他原则完成的。如:拓展百分之百的开闭原则很难达到,但要尽量符合开闭原则;该原则也是度量程序设计的好与坏的唯一标准。在设计时对于将来可能会发生变化的部分,...原创 2021-02-21 15:51:18 · 776 阅读 · 0 评论 -
UML——顺序图
概念顺序图描述按照时间的先后顺序对象之间交互动作过程,顺序图将交互关系表现为一个二维图,纵向是时间轴,时间沿竖线向下延伸。顺序图由对象、消息和生命线(激活)构成。对象表示为一个矩形,其中对象名称标有下划线;消息是对象之间的通信,是两个对象之间的单路通信,是从发送者到接收者之间的控制信息流;消息又细分为调用消息、返回消息、自身消息、发送消息、创建消息、销毁消息、同步消息和异步消息等;消息使用带有各种箭头的线条表示。生命线用一条纵向虚线表示;激活是过程的执行,包括等待过程执行的时间。在顺序图中激活部分原创 2021-02-21 14:08:09 · 4534 阅读 · 0 评论 -
UML——静态类图
在面向对象程序设计中用的最多的就是类图。类图是一种结构视图,用于定义系统中的类,包括描述类的内部结构和类之间的关系。类图构成要素及符号类图由类、接口及其之间的关系构成类图三要素。类在UML图中,类用包括类名、属性和方法的矩形来表示;类名、属性、方法均可加相应的修饰符,代表限定修饰符。如:类的修饰符包括abstract、final;方法属性修饰符有Public、protect、private、staitc、final等;不同的设计工具表示的图形符号略有差异,如:powerdesigner类表示如下原创 2021-02-20 21:35:03 · 3593 阅读 · 0 评论 -
UML简介
UML概念UML(Unified Modeling Language)统一建模语言,是一种设计语言,与我们常见的开发语言无关。是软件设计者、程序员之间用于沟通交流的一种语言,由一组图形符号组成,类似土木工程中的设计图纸。UML的构成UML使用事物( Things )、关系(Relationships )和图( Diagrams )刻画描述模型内容,其中事物和关系是通过一些基本图示符号来代表面向对象的概念及这些对象之间的关系,如类使用包括类名、属性和方法的矩形来表示,泛化关系使用带有三角箭头的实线表示;原创 2021-02-20 20:28:19 · 488 阅读 · 0 评论 -
类与类之间的关系——通过java代码解释
类与类之间关系包含关联(聚合、组合)关系、依赖关系、泛化关系和实现关系,以下由通过代码来解释这些关系。关联关系当一个类的属性包含另一个类创建的对象变量时,称这两个类为关联关系。如:部门类代码://部门类class department{ //部门属性 private string departName; private Employee[] employes //部门中含有一个员工类定义对象的集合 //部门的方法 public setName(St原创 2021-02-20 18:59:28 · 1516 阅读 · 2 评论 -
类的划分——操作类
概念操作类也成业务操作类,生成的对象为业务对象。这些类是通过业务操作规则、步骤、业务处理逻辑抽象而得出的类。这些类在现实世界是不存在的,而是需要在相同操作进行提炼而产生的,这些类的设计与提炼,需要非常熟悉面向对象设计原则和各种软件设计模式,是面向对象程序设计中难点和重点。如:mybatis中SqlSessionFactoryBuilder就是根据业务规则抽象出来的一个用于创建一个SqlSessionFactory的类。又如:分析商城结算中各种促销活动,可以抽象出费用计算程序类。示例代码如:游戏中备份和原创 2021-02-18 20:08:58 · 1777 阅读 · 0 评论 -
类的划分——实体类
概念也成POJO(简单ava对象);实体类的作用是通过单一职责原则而产生的仅完成数据载体一种类,很类似面向过程中的结构体,实体类仅包含私有属性和get、set方法,有时为了方便,实体类包含给属性赋值的构造函数等。PO、DTO、VO均属于实体类范畴。POPO就是持久化对象,数据库中一条记录就可以转换为一个持久化对象,数据库库设计完成后,PO对象即可设计完成。目前存在很多工具支持通过数据库表生成各种PO对象类。如数据库中包括notice表,包含标题、公告内容、发布时间等字段,就可以生成一个Notice P原创 2021-02-18 18:47:09 · 2311 阅读 · 0 评论 -
类的划分——边界类
在程序设计时将类划分为边界类、操作类、实体类,明确地给出每种类的职责。概念一般指完成人机交互界面类组成;当前边界类的开发主要由各种界面控件、人机交互自定义组件组成,包含了样式、属性和操作等,如视频播放组件、计数器组件均为边界类,隐藏了实现细节,用户简单的通过暴露出的接口或属性即可复用,大大提高了前端开发的开发效率。自定义组件代码使用VUE开发一个租售信息列表自定义组件<template> <div class="today-body"> <div原创 2021-02-18 17:43:53 · 5059 阅读 · 3 评论 -
java面向对象的基本概念
Coad和Yourdon给出了一个面向对象程序的定义:“面向对象=对象+类+继承+通信”。以下具体说明如下:对象对象是面向对象开发模式的基本成份,程序运行是通过各种对象相互作用完成的;每个对象可用它本身的一组属性和它可以执行的一组操作来定义。每个对象都是类的实例,对象是运行阶段创建的,一个对象创建后就是确定的,如程序中定义了报文协议有427、428两种版本,运行时创建的对象一定是某一个确定的协议。类类是现实世界或思维世界中的实体在计算机中的反映,软件开发人员角度程序组成,代码写在一个又一个类中。每原创 2021-02-16 16:20:53 · 258 阅读 · 0 评论 -
面向对象三大特征---继承
继承的概念继承是一种类与类的关系,就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为,继承是实现代码复用的一种方式,继承实现了面向对象模块的层次性。被继承的类叫做基类或父类,继承后产生的新类叫派生类或子类。上图所示是一个具有三级层次的继承结构,动物是食草动物、食肉动物的基类,食草动物是兔子、羊的父类;兔子、羊又是食草动物的子类;食草动物、食肉动物是动物的子类。继承的实现C++可以实现多继承,java、C#等大部分程序语言仅允许实现单继承。继承是为了复用父类代码的一种机制,使原创 2021-02-16 14:44:38 · 198 阅读 · 1 评论 -
面向对象的三大特征—封装
封装(encapsulation)是面向对象的三大特征之一,将对象运行所需的方法和数据封装在程序对象中,对外仅暴露(public修饰的方法或属性)接口,调用方只需知道这个对象能做什么,而不管它是如何做的。换句话说就是隐藏对象的属性和实现细节,这时当这个对象发生有bug时,仅需修改对象内部的方法,不会扩散到程序其它部分。举个例子:商城程序中在会员生日时,给会员发送GSM祝福短信。这时我们创建一个GSM对象的类,让它与短信moden创建scoket连接、短信编码、AT指令等内容,但对外只暴露一个public方原创 2020-12-27 20:44:50 · 302 阅读 · 1 评论 -
面向对象三大特征---多态
概念:允许不同类的对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式发送消息就是函数调用优点可替换性:多态对已存在代码具有可替换性.可扩充性:增加新的子类不影响已经存在的类结构.接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的.灵活性.简化性.如何实现多态实现多态主要有以下三种方式:接口实现继承父类重写方法同一类中进行方法重载...原创 2021-02-15 22:24:49 · 263 阅读 · 0 评论 -
怎么理解设计模式是要消灭业务中分支语句
设计模式就是要消灭业务中的分支语句。分支语句破坏开闭原则,当条件发生变化时,我们不得不修改代码。但并不是完全不用分支语句,哪种情况可用,哪种情况下不可用?原创 2020-11-18 10:11:57 · 143 阅读 · 1 评论 -
面向对象技术思想浅谈
概念面向对象技术是为了适应软件复杂度、规模、需求不确定性因素越来越大,而产生的一种编程技术。它不再以解决分析问题的处理步骤为核心,而是参与处理问题的各种对象为核心,面向对象技术首先需要开发人员将处理问题的数据、规则、操作按照面向对象设计原则的要求抽象、归纳出一个个类,通过这些类创建的对象相互作用完成给定的任务。面向对象开发的第一步是建模,难度要比面向过程开发复杂。以面向过程编程中用户登录系统为例,进行说明。根据业务规则,可以设计以下四个类数据库操作类:完成数据库连接、SQL语句的执行;用户数作类:根原创 2020-12-12 17:51:25 · 224 阅读 · 0 评论 -
面向过程的编程思想
概念面向过程的编程是按照给定任务的处理步骤,进行组织编写代码的,如:单击登录按钮完成用户登录系统的功能,需要执行以下步骤验证用户名和密码是否输入,是否符合规则创建数据库连接;通过数据库连接,根据用户名检索输入的该用户的信息;如果该用户存在,对输入密码字符串进行加密转换为密文,用密文和该用户存储的密码进行比对;如果一致则允许进入系统,否则将提示信息反馈给用户。写代码时,我们完全可以把整个处理过程写到登录按钮的单击事件中,围绕着登录系统过程一步一步完成编程。当然,如果单击事件代码量太多,也可以将一原创 2020-12-12 16:42:12 · 434 阅读 · 0 评论 -
面向对象程序设计基本原理
引言对面向对象技术的基本原理的理解,有助于对掌握面向对象的语言,从而在实际开发中做出好的系统。面向对象基本原理包括抽象(Abstraction)、 封装(Encapsulatio)、 模块性(Modularity)、 层次性(Hierarchy)抽象(Abstraction)在面向对象开发模式中,把标识和模型化问题论域中的主要实体做为系统开发的起点。所谓的抽象就是将业务领域中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口,抽象的过程就是建模过程。抽象时主要考虑对象的行为而不是必须原创 2021-02-09 13:59:21 · 3920 阅读 · 0 评论 -
面向对象程序设计中对抽象的理解
在面向对象软件开发中抽象是最基本的方法,抽象到底是什么呢?抽象和接口有什么关系呢?在这里谈谈自己的看法。抽象的过程也是一个裁剪的过程,不同的、非本质性的特征全部裁剪掉了,即就是抽取事物的共同特征就是抽取事物的本质特征,舍弃不同特征。面向对象软件开发的起点就是抽象建模过程,即就是识别参与问题领域的实体,并对其进行抽象,此时并不考虑具体的实现细节,仅给出该对象应该具备的功能即可,也就是形成接口或抽象类。举个例子:房屋装修是业务领域要解决的问题,需要改水电、铺地砖、墙面处理等工作内容。如果用面向对象的思想考原创 2021-02-14 14:49:18 · 2265 阅读 · 1 评论 -
面向对象技术的设计目标
引言劳动是知识的源泉,同样面向对象技术是在软件开发过程中,不断地发现问题和解决问题基础上产生的。了解面向对象技术要解决软件开发中的问题,有助于我们站在面向对象技术的顶端,感悟前人解决问题的思想,实现创新性的学习;同时才能提纲挈领,有助于我们对该项技术的学习。面向对象技术产生的动机面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。函数是面向原创 2021-02-10 10:30:55 · 917 阅读 · 0 评论 -
分层框架下后端模块设计步骤
模块设计隶属软件设计中的详细设计,一般是由编码的程序员负责实现的。一般要经历“界面设计—>类与接口设计—>数据结构与算法设计”三大步骤,通常需要反复迭代。当前主流的软件开发框架都是分层框架,每一层都有明确的责任和分工,类的划分上调用方仅需要知道被调用能做什么,无需了解被调用方是如何实现的,要体现面向对象程序的三大特征中的封装性。controller设计界面设计是人机交互部分,需要充分考虑最终操作用户的操作感受和体验,关于界面设计的具体要求再此不做描述,重点说明在分层框架下后端模块设计的步骤。原创 2021-01-08 17:20:41 · 723 阅读 · 0 评论 -
要依赖于抽象,不要依赖于具体
在面向对象设计原则中,要求"要依赖于抽象,不要依赖于具体", 这句话有很多人搞不懂。在这里谈谈我自己的理解。首先看看以下代码class A{ public void swim(){ Dog dog = new Dog(); dog.move(); }}Swim方法中定义了一个Dog的对象,那么无论哪个对象调用这个方法时,一定是"狗爬",Swim和Dog的对象是紧耦合的关系,我们想换成鸭子或青蛙是不可能。假如代码这样换一下,我们定义一个动物的接口,接口定义一个Move方法。原创 2020-12-24 20:13:44 · 4373 阅读 · 4 评论 -
controller的设计要求
前后端完全分离,前端和后端分别由不同的程序员进行开发,如何设计controller很重要,那么进行后端开发的程序员如何进行这部分的设计与规划呢?首先:后端程序员必须熟悉业务模块中人机交互的内容,以模块...原创 2020-12-07 11:42:43 · 707 阅读 · 0 评论 -
面向对象设计中控制类的设计
面向对象设计内容刚入行的程序员无论使用面向过程的开发语言、还是面向对象的开发语言,往往只关注功能的实现,将用户交互逻辑、控制逻辑和数据库的操作紧耦合在一起,是一种典型的all in one的编程模式。面向对象开发技术强调一切都是对象,重点是将all in one的编程模式中处理的过程封装成高内聚、低耦合的类。在面向对象程序设计首先需要根据需求识别出参与系统的各种对象,这些对象又可划分为实体对象、边界对象和控制对象,然后将这些对象进行进一步的抽象和封装,得到相应的实体类、边界类(人机交互界面)和控制类。其原创 2020-11-27 18:18:36 · 1128 阅读 · 0 评论 -
程序规范之命名规范
命名规则1. 基本规则:采用大小写混合命名规则,提高名字的可读性。准确说明变量、字段、类、接口、包等完整的英文描述符。尽量少用缩写,如果一定要使用,应当使用公共缩写和习惯缩写。2. 包(Package)的命名规则:包名一律小写, 少用缩写和长名。3. 类的命名:采用大小写混合的方式,每个单词的首字母大写,使用完整单词,避免用缩写词。在使用java的SSM框架中,位于每一层的类加后缀,代表类的属性,规则如下controller层中的类后缀为:Controller;service层后缀为:Servic原创 2020-11-18 15:43:47 · 2435 阅读 · 0 评论 -
软件体系结构中分层体系结构应用广泛的原因
分层体系结构中赋予不同层次结构不同功能,每层业务单一,遵循了单一职责原则;若不分层,可能所有的职责就耦合在了一起,当某一个职责发生变化时,可能会影响其它的职责,开闭原则违背的概率就很大,不利于软件的维护。在分层结构中,使用spring的依赖注入(IOC),使系统以更松散的方式耦合,从而更易于维护。...原创 2020-11-18 11:43:53 · 320 阅读 · 0 评论