第一章 设计模式概述

目录

1.1 代码质量好坏如何评价?

1.2 编程方法论

1.3 设计模式概述

1.4 产生背景

1.5 设计模式分类


1.1 代码质量好坏如何评价?

1 ) 可维护性

可维护性强的代码指的是: 在不去破坏原有的代码设计以及不引入新的BUG的前提下,能够快速的修改或者新增代码.

不易维护的代码指的是: 在添加或者修改一些功能逻辑的时候,存在极大的引入新的BUG的风险,并且需要花费的时间也很长.

2 ) 可读性

软件开发教父,Martin Fowler曾经说过一句话: "任何傻瓜都能够编写计算机能理解的代码,而优秀的程序员能够编写人类能理解的代码。" 这句话的意思非常容易理解,就是要求我们写出的代码是易读的、易理解的,因为代码的可读性会在很大程度上影响代码的可维护行性.

使用idea开发的同学建议添加 “Alibaba Java Coding Guidelines”,阿里提供的开发代码规范的检查插件,有助于提高代码的可读性。

3 ) 可扩展性

 代码的可扩展性表示,我们在不修改或少量修改原有代码的情况下,通过扩展的方式添加新的功能代码。

对修改关闭,对扩展开放

4 ) 灵活性

"灵活" 是指在添加新代码的时候,已有代码能够不受影响,不产生冲突,不出现排斥,在保证自身不遭到破坏的前提下灵活地接纳新代码。

5 ) 简洁性

我们要遵从KISS ( Keep It Simple Stupid) 原则,代码要尽可能的简单;但是思从深而行从简,真正的高手能云淡风轻地用最简单的方法解决最复杂的问题。这也是一个编程老手跟编程新手的本质区别之一。

6 ) 可复用性

代码的可复用性可以简单地理解为,尽量减少重复代码的编写,复用已有的代码.

复用代码,切记不能盲目复用他人代码,要了解复用代码的处理逻辑,避免导致出现各种其他的问题。例如,包含事务的方法,避免事务失效。

 7 ) 可测试性

单元测试在一个完整的软件开发流程中是必不可少的、非常重要的一个环节。通常写单元测试并不难,但有的时候,有的代码和功能难以测试,导致写起测试来困难重重。所以写出的代码具有可测试性,具有很重要的作用。

1.2 编程方法论

要拥有编写高质量代码的能力,我们就要学习一些编程的方法论.其中就包含面向对象(我们可以把它看成一种设计思想)、设计原则、设计模式、编程规范、重构技巧等等

1 ) 面向对象

面向对象是一种编程思想,也是一种编程范式. 现在比较流行的编程语言大部分都是面向对象编程语言.而大部分项目也都是基于面向对象编程风格进行开发的.

2 ) 设计原则

设计原则是指导我们代码设计的一些经验总结。在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据设计原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。

常用的设计原则

  • 单一职责原则
  • 开闭原则
  • 里氏代换原则
  • 依赖倒转原则
  • 接口隔离原则
  • 迪米特法则

3 ) 设计模式 

设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思 路。大部分设计模式要解决的都是代码的可扩展性问题。

4 ) 编程规范

编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节。

5 ) 重构

极限编程或其他敏捷方法学中,重构常常是软件开发循环的一部分:开发者轮流增加新的测试和功能,并重构代码来增进内部的清晰性和一致性。

6 ) 总结

提高代码质量的方法论包含:

  • 面向对象思想 (基础)
  • 设计原则 (指导方针)
  • 设计模式 (设计原则的具体实现)
  • 编程规范 (提高代码可读性)
  • 重构 (面向对象设计思想、设计原则、设计模式、编码规范的融合贯通)

1.3 设计模式概述

  • 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
  • 大部分设计模式要解决的都是代码的可重用性、可扩展性问题

  • 学习设计模式的好处

    • 能够从容应对面试中的设计模式相关问题

    • 不再编写 bullshit-code

    • 提高复杂代码的设计和开发能力

    • 有助于我们读懂源码,学习框架更加事半功倍

1.4 产生背景

"设计模式" 最初并不是出现在软件设计中,而是被用于建筑领域的设计中。

1.5 设计模式分类

设计模式只有23个,但是它们各具特色 ,每个模式都为某一个可重复的设计问题提供了一套解决方案。

根据它们的用途,设计模式可分为 创建型(Creational) 结构型(Structural) 行为型(Behavioral)

创建型模式(5种):提供创建对象的机制,提升已有代码的灵活性和可复用性

常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。

不常用的有:原型模式。

结构型模式(7种):介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效

常用的有:代理模式、桥接模式、装饰者模式、适配器模式。

不常用的有:门面模式、组合模式、享元模式。

 行为模式(11种):负责对象间的高效沟通和职责传递委派

常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。

不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、单项选择题 1 数据库的概念模型独立于_______。 A.具体的机器和DBMS B.E-R图 C.信息世界 D.现实世界 2 在数据库中存储的是_______。 A.数据 B.数据模型 C.数据以及数据之间的联系 D.信息 3 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是_____ __。 A.DBS包括DB和DBMS B.DBMS包括DB和DBS C.DB包括DBS和DBMS D.DBS就是DB,也就是DBMS 4 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段 。在这几个阶段中,数据独立性最高的是_______阶段。 A.数据库系统 B.文件系统 C.人工管理 D.数据项管理 5 关系模型中,一个码是_______。 A.可由多个任意属性组成 B.至多由一个属性组成 C.可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成 D.以上都有不是 6 在数据库中,下列说法_______是不正确的。 A数据库避免了一切数据的重复 B 若系统是完全可以控制的,则系统可确保更新的一致性 C 数据库中的数据可以共享 D 数据库减少了数据冗余 7 从软件的角度考虑,数据库系统的核心是_________。 A 操作系统 B 数据库管理系统 C 数据定义语言 D 数据操纵语言 8 数据库管理系统能实现对数据库中数据的查询、插入、修改和删除等操作,这种功能称 为________。 A.数据定义功能 B.数据管理功能 C.数据操纵功能 D.数据控制功能 9 _________是存储在计算机内有结构的数据集合。 A数据库系统 B 数据库 C 数据库管理系统 D 数据结构 10 数据库系统与文件系统的主要区别是_______________。 A 数据库系统复杂,而文件系统简单 B 文件系统不能解决数据荣余和数据独立性问题,而数据库系统可以解决 C 文件系统只管理程序文件,而数据库系统能够管理各种类型的文件 D 文件系统管理的数据量较少,而数据库系统可以管理庞大的数据量 11 数据库的基本特点是____________________。 A 数据结构化;数据独立性高;数据冗余大、可移植;便于统一管理和控制 B 数据结构化;数据独立性高;数据冗余小,容易扩充;便于统一管理和控制 C 数据结构化;数据互换性;数据冗余小,易扩充;便于统一管理和控制 D 数据非结构化;数据独立性高;数据冗余小,易扩充;便于统一管理和控制 12 数据库中,数据的物理独立性是指____________________。 A 数据库与数据库管理系统的相互独立 B 用户程序与DBMS的相互独立 C 用户的应用程序与存储在磁盘上数据库中的数据是相互独立的 D 应用程序与数据库中数据的逻辑结构相互独立 13 数据库的特点之一是数据共享,严格的讲,这里的数据共享是指_______________。 A 同一个应用中的多个程序共享一个数据集合 B 多个用户、同一种语言共享数据 C 多个用户共享一个数据文件 D 多种应用、多种语言、多个用户互相覆盖的使用数据集合 14 下述关于数据库系统的正确描述是_________________。 A 数据库系统减少了数据冗余 B 数据库系统避免了一切冗余 C 数据库系统中数据一致性是指数据类型一致 D 数据库系统比文件系统能管理更多的数据 15 下述关于数据库系统的正确描述是________________。 A 数据库中只存在数据项之间的联系 B 数据库的数据项之间和记录之间都存在联系 C 数据库的数据项之间无联系,记录之间存在联系 D 数据库的数据项之间和记录之间都不存在联系 16 数据库管理系统的工作不包括______________。 A 定义数据库 B 对已定义的数据库进行管理 C 为已定义的数据库提供操作系统 D 数据通信 17 数据库管理系统中用于定义和描述数据库逻辑结构的语言称为______________。 A 数据定义语言 B 数据库子语言 C 数据操纵语言 D 数据结构语言 18 数据库系统的数据独立性是指______________。 A 不会因为数据的变化而影响应用程序 B 不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序 C 不会因为存储策略的变化而影响存储结构 D 不会因为某些存储结构的变化而影响其他的存储结构 19 为使程序员编程时既可使用数据库语言又可使用常规的程序设计语言,数据库系统需要 把数据库语言嵌入到_______________中。 A 编译程序 B 操作系统 C 中间语言 D 宿主语言 20 在数据库中,产生数据不一致的根本原因是_________。 A 数据存储量太大 B 没有严格保护数据 C 未对数据进行完整性控制台

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值