23种设计模式的支撑---六大原则

一、开闭原则

开闭原则是指在面向对象编程领域中,规定软件中的对象,类,函数是允许扩展但不允许修改的。开闭原则的核心思想可以理解为面向抽象编程。

如何理解呢?

我们在编写代码时要尽可能的提高代码的灵活性,可以去对功能进行扩展,但尽量避免去修改之前已经写好的类。举个例子,当我们要去修改之前一个工具类,我们不应该直接去修改源代码而是进行水平扩展,重新构建工具类,通常要实现这种效果,我们一般要使用继承或者实现接口,这两种方式,无论哪种,都是面向抽象编程的思想。

在设计代码时遵循开闭原则,对一些可抽象的点去进行抽象能够很好的帮助我们后期进行项目维护,可以在不改动之前的代码基础上对功能进行扩展和修改。

二、单一职责原则

单一职责原则就是在设计代码时,保证一个类只去承担项目中的一个职责,尽可能避免复用。

如何理解?

我们在使用spring框架编写代码时,对于前后端数据交互我们通常要封装实体类。做过项目的朋友我们就会发现,有很多实体类其实是可以复用的。但,我们不要复用!虽然复用之后可以少写一些代码,但每个类的职责划分就会不清晰,同时对于项目后期的变更需求,我们就会难以维护,因此绝对禁止复用实体类。

上述例子是一个日常开发的例子,在设计代码时,当一个类所承担的职责过多时,我们要对该类进行抽象,然后划分职责。譬如,一个视频网站,我们要实现三种用户观看时给予不同的反馈,正常我们需要使用if-else循环来进行判断,遵循单一职责原则,我们可以对功能进行抽象,实现三个实现类来实现功能,每个用户类都只承担一个责任,并且对于后续的用户类别的细分也很容易进行水平扩展。

三、里氏替换原则

里氏替换原则是指,子类可以扩展父类的功能,但不能修改父类的功能。也就是说,我们子类继承父类后尽可能不去重写父类的方法。

  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
  • 子类可以增加自己的特有方法
  • 当子类重载父类的方法时,方法的前置条件要比父类的方法更宽松。
  • 当子类的方法(重载,重写,实现抽象方法)时,方法的后置条件(返回指或者输出)要比父类方法更加严格或者相等。

如何理解?

很多朋友可能会很懵为什么不允许重写父类的方法,其实从代码层面上是被允许的,实际应用在业务上也并无不可,但从类的角度上看业务划分就完全不同了。譬如,现在有一个储蓄卡和信用卡类,储蓄卡拥有两个功能,扣款和充值,信用卡有两个功能,贷款和还款。储蓄卡和信用卡的两个行为从现实生活中看并无二致。当我们编写好储蓄卡类后可以选择信用卡类继承储蓄卡类,然后重写储蓄卡类的方法。采用这种设计方式,我们在无形间就违背了里氏替换原则,让子类修改了父类的功能,虽然能够实现效果,但在业务上划分是不够清晰的,对于系 统后期维护和扩展时不利的。我们应该去抽象出一个card接口,定义需要实现的方法,让储蓄卡和信用卡去进行实现。

 四、迪米特法则

迪米特法则又称为最少知道原则,是指在一个类中对于其他对象类知道的越少越好。换言之,降低耦合,知道越少体现在代码上就是引用越少,自然耦合度越低。

如何理解?

在进行代码设计时,我们尽可能的让每个类把本职工作做好,不要跨层级依赖。譬如在spring框架编写业务代码时,我们通常划分为controller层,service层,DAO层,各个层级之间通过依赖注入的方式实现交互,遵循迪米特法则就是要在每一层去做好本职的事情,不允许在controller层去注入DAO层,于controller层而言,DAO层是感知不到的。

五、接口隔离原则

接口隔离原则是指,我们对一些抽象出来比较臃肿的接口,要进一步细分,避免接口过于臃肿。

单一职责原则、开闭原则可以看作是对类的重构,强调对类进行抽象和划分,增强代码灵活性。而接口隔离原则则是强调对接口的功能细分。

六、依赖倒置原则

依赖倒置原则又称为面向接口编程。该原则表明,高层模块不应该依赖于底层模块,二者都应该依赖于抽象。

如何理解?

在spring编写业务时,我们通常会定义service接口,以及对应的实现类,在controller层注入时,我们不会去在代码中直接定义依赖service的实现类而是去依赖它的接口。

为什么要使用这种方式?

遵循依赖倒置原则,可以降低类之间的耦合,提高系统的稳定性及可维护性,譬如,当我们去定义了两个实现类去实现同一个接口,我们如果在controller层定义具体的实现类,Java中的多态就无法发挥作用。定义成接口,在spring依赖注入时就可以实现接口多态,使得代码更加灵活。

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库课设-停车场管理系统 数据库课设-停车场管理系统全文共20页,当前为第1页。数据库课设-停车场管理系统全文共20页,当前为第1页。 数据库课设-停车场管理系统全文共20页,当前为第1页。 数据库课设-停车场管理系统全文共20页,当前为第1页。 学 号: 课 程 设 计 课程名称 数据库系统概论 学 院 计算机科学与技术学院 专 业 软件工程专业 班 级 姓 名 指导教师 2013——2014学年 第2学期 数据库课设-停车场管理系统全文共20页,当前为第2页。数据库课设-停车场管理系统全文共20页,当前为第2页。课程设计任务书 数据库课设-停车场管理系统全文共20页,当前为第2页。 数据库课设-停车场管理系统全文共20页,当前为第2页。 学生姓名: 专业班级: 指导教师: 工作单位: 计算机学院 题 目: 湖北省大学生就业管理系统设计 初始条件: 结合具体的开发案例,通过实践使同学们经历数据库应用系统设计的全过程,并受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 课程设计内容 对实际系统进行分析,写出需求分析说明。 概念结构设计 逻辑结构设计     实现设计 课程设计步骤与方法 对实际系统进行分析,间接调查,鼓励直接调研;写出需求分析说明。 数据库设计 (1)概念结构设计 说明本数据库将反映的现实世界中的实体、属性和它们之间的关系等的原始数据形式,包括各数据项、记录、表的标识符、定义、类型、度量单位和值域,建立本数据库的每一幅用户视图和全局视图(E-R图,可以用基本E-R图或扩展E-R图)。 (2)逻辑结构设计 将概念结构映射为数据库全局逻辑结构(关系模型),包括所确定的关键字和属性、重新确定的记录结构和所建立的各个表文件之间的相互关系。其中提请注意: a.用规范化的方法检查表 b.数据字典设计 对数据库设计中涉及到的各种项目,如数据项、记录、模式、子模式等一般要建立起数据字典,以说明它们的标识符、同义名及有关信息。    c.安全保密设计 说明在数据库的设计中,将如何通过区分不同的访问者、不同的访问类型和不同的数据对象,进行分别对待而获得的数据库安全保密的设计考虑。 (3)实现设计 以流行的RDBMS为支撑: a. 写出数据库、关系的定义形式包括:列级约束和表级约束 b. 索引、聚簇的设计; c. 视图及查询设计 系统的功能模块图 数据库课设-停车场管理系统全文共20页,当前为第3页。数据库课设-停车场管理系统全文共20页,当前为第3页。课程设计题目 数据库课设-停车场管理系统全文共20页,当前为第3页。 数据库课设-停车场管理系统全文共20页,当前为第3页。 每个学生分配一个设计题计, 详见数据库课程设计题目明细表。 五、课程设计说明书 概述(设计题目与可行性分析) 系统目标和设计原则 支撑环境规划 硬件及软件支撑环境及开发工具 系统总体结构 4.1 总体DFD 4.2 功能结构 功能结构图,主要功能(或"处理(Process)")说明。 4.3 数据库结构 数据字典、E-R图,关系数据库模式 总体实施计划 研制报告 研制过程,本规划的特点、不足,体会等 参考文献 六、设计要求: 每个学生分配一个设计题。 设计报告正文字数不少于0.5万字(不包括附录) 设计报告要求打印,层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。 明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,积极认真地做好准备工作。 课程设计中,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。 严格要求自己,有意识地树立严谨的科学作风,要独立思考,刻苦钻研,按时、独立完成课程设计任务。 七、课程设计进度表 序号 内 容 所用时间 1 消化资料、系统调查 2天 2 系统分析 1天 3 总体设计 1天 4 撰写报告 1天 合计 5天 指导教师签名:凌咏红 2014年6月 17 日   系主任(或责任教师)签名: 2014年6月 日 数据库课设-停车场管理系统全文共20页,当前为第4页。数据库课设-停车场管理系统全文共20页,当前为第4页。停车场管理系统设计 数据库课设-停车场管理系统全文共20页,当前为第4页。 数据库课设-停车场管理系统全文共20页,当前为第4页。 一、概述(设计题目可行性分析) 现今的社会发展迅速,私人汽车成为了人们在交通方面不可或缺的交通工具,相对于其他的交通工具来说,汽车的便捷性相对较高,所以很多时候人们都愿意选择开上自己的汽车去自驾游,使得停车位的需求也在迅速的增长着。为了满足大量的顾客的停车需求,停车场管理不能仅仅依靠增加车位数量等,所
共150讲,时长共 33小时18分钟 1) 优秀的程序应该是这样的:阅读时,感觉很优雅;新增功能时,感觉很轻松;运行时,感觉很快速,这就需要设计模式支撑。 2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,但是不知道怎么使用到真实项目。本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,比如 单例模式的8种实现方式、工厂模式的3种实现方式、适配器模式的3种实现、代理模式的3种方式、深拷贝等 3) 如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧 课程内容和目标 本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式 1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种实现)、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式(3种实现)、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式(3种实现)。行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员能掌握主流设计模式,规范编程风格,提高优化程序结构和效率的能力
短信平台建设方案 作者:沈言炎 本方案未经许可,不得转载;违者必究! 目录 一、前言 4 二、平台总体规划 5 2.1、平台总体设计 5 2.2、系统总体框架 5 2.3、系统设计要求 6 2.4、系统设计原则 7 三、项目概况 8 3.1、项目的核心及开发目的 8 3.2、服务对象 8 3.3、项目开发环境 8 四、功能模块 9 3.1开机自启动 9 3.2短信发送功能 9 五、我们的优势和特色 10 六、技术保证和建议运行环境 12 6.1、技术保证 12 6.2、运行环境 12 七、网站运营周期 12 八、开发项目报价 13 一、前言 传统的短信群发平台是基于中国移动、联通、电信直接提 供的短信端口与互联网连接实现与客户指定号码进行短信批量 发送和自定义发送的,短信平台主要分为两种:一种是要下载 安装到本地的软件版,一种是通过浏览器登录的网页版短信平 台。据"短信营销研究中心"介绍,从两种短信平台的功能实 现来看,基本是一致的,都是通过客户端直接向运营商服务器 发送群发请求。 如果从短信平台的特殊要求来看,短信平台可以是通用短 信平台和定制开发的短信平台。有的行业和部门因为长期使用 短信发送,按照其正规性的要求,会要求短信公司为其定制开 发满足其特定要求的短信平台。 一般对定制短信平台有需要的用户短信发送量偏大,周期 稳定,多用于大型企业、商家。随着店铺管理机制在中国发展 和完善,个体店主也开始管理会员并寻求开展短信营销的方 法,像生意专家这样专门面向小店开发的店铺管理软件应运而 生,软件内内置短信平台,解决了小店主无法与会员建立信息 传递的问题。 短信群发的宗旨是为企业发展、节约开支、提高效益。短 信群发为企业树立品牌形象或占有市场创造了无限商机,也能 为企业大幅降低广告开支。 该平台是针对物理隔离的状态下,通过短信平台将短信发 送到指定的手机上,使用户及时收到最及时的消息。 二、平台总体规划 2.1、平台总体设计 根据短信平台建设的总体要求,结合目前应用系统状况,系统建设的 技术路线应坚持"需求为导向、应用促发展,统筹规划、科技支撑,分 工负责、持续发展"的指导思想,建立安全与业务支撑环境,形成上下 关联、信息共享的应用系统。 在系统的设计、开发和运行过程中,采用下列的技术路线: 1、采用架构是C/S结构。 2.1.1 C/S结构 为充分保证系统在安全性、跨平台性、易扩展性、易维护性等方面的 要求,建议采用C/S架构。在这种结构下,用户界面通过客户端和服务 器端实现,一部分事务逻辑在客户端端实现,但是主要事务逻辑在服务 器端实现。用客户端和服务器端实现短信发送强大功能,并是过程更加 安全方便。这种结构已成为当今应短信平台用软件的首选体系结构。 2.1.2 面向对象或面向过程的设计与开发 根据不同的应用类型,采用面向对象或面向过程的系统分析与设计方 法。 传统的软件工程以软件的工程化为目标,强调方法论,工具与环境, 质量保证体系,项目管理,配置管理,但基本理念是基于具体需求、从 零开始的开发。这种开发模式显然已经不适合于现代软件系统开发的要 求。而面向对象的设计以软件的组装式生产为目标,强调各种粒度的软 件重用、接口与表示和实现分离、统一对象模型,继承和发展了传统软 件工程。面向对象技术将计算看成是一个系统的演变过程,系统由对象 组成,通过一系列的状态变化来完成计算。对象具有保持能力和自主计 算能力。面向对象设计和实现的重点是多个对象的网状组织结构和协同 计算,而不是过程调用的层次结构,这样就在本质上适应了并发、分布 系统及互联网的计算特征。 2.2、系统总体框架 在整个系统的设计上,在保证系统效率的前提下,将突出系统的开放 式、标准化、模块化、易用实用、性能优化、可靠稳定等特点。 根据"一个数据中心、一个基础平台、一套标准体系,多个业务应 用"的原则,平台建设读取原系统中发送短信功能,存放在数据库中没 有发送的短信,该平台将没有发送的短信的接收方、短信内容获取并发 送给你指定短信接收方。与原来的系统是独立的,不影响原系统的正常 工作。 其中: 标准和规范支撑体系 标准与规范支撑体系是保障整个系统实施成功的关键因素,也是成功 实施最重要的一环,系统建设需要符合国家信息化建设的相关标准和规 范。 l 网络基础设施层 网络基础设施层为系统提供了必要的网络基础环境,提供了可靠、有 效的信息传输服务通道,是各类信息系统的最终承载者。在门户网站建 设中,利用公司已有的软硬件平台资源来进行系统部署,建立完善的安 全保障措施来保障系统安全。 l 数据层 数据层为系统提供数据存储功能,是信息系统的信息资源中心。门户 网站系统的信息库主要包括资源数据库、备份数据库和文件数据库等。 l 应用层 应用层提供一个应用程序负责读取数据库中为未发

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值