快要考试了,根据所给提纲和上课所学边复习边罗列一下重难点吧。学得不好,如有疏漏欢迎指正!
一、可维护性的常见度量指标
圈复杂度、代码行数、可维护性指数(MI)、继承的层次数、类之间的耦合度、单元测试的覆盖度等
二、聚合度与耦合度
聚合度:模块内部各成份(语句或语句段)之间的联系
耦合度:从模块外部考察模块的独立性程度
目标:高内聚、低耦合
Example:
三、SOLID
(SRP) The Single Responsibility Principle 单一责任原则 :
不应有多于1个的原因使得一个类发生变化
(OCP) The Open-Closed Principle 开放-封闭原则
对扩展性开放,对修改封闭
——抽象与接口
(LSP) The Liskov Substitution Principle Liskov替换原则
子类必须能替换其基类型
(DIP) The Dependency Inversion Principle 依赖转置原则
具体依赖于抽象而非抽象依赖于具体
——通过interface建立联系而非具体子类
(ISP) The Interface Segregation Principle 接口隔离原则
客户端不应依赖于他们不需要的方法
与专用接口建立联系——大的通用接口改为具体的接口
四、语法、正则表达式
·产生式:表示该变量根据其他变量,运算符和常量的定义
·非终结符:相当于变量,表示一组字符串
·终结符:相当于常量,语法分析树中的叶子
·运算符:ab,a*,a|b,[^a-c],[a-c],a+,a?
正则语法:
简化后可以表达为一个产生式而不包含任何非终止节点
除去所有引号和空格
特殊符号:
Example:
五、设计模式
1.Creational patterns 创建型模式
factory method 工厂模式:
定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,即把创建对象的职责分给另一个类来实现
2.Structural patterns 结构型模式
adapter 适配器模式:
将某个类/接口转换为client期望的其他模式
Example:
decorator 装饰器模式:
对每一个特性构造子类,通过委派机制增加到对象上
存在组合爆炸、重复量大等问题:由继承导致
Example:
3.Behavioral patterns 行为类模式
strategy 策略模式:
有多种不同的算法实现同一个任务,但需要client根据需要动态切换算法,而不是写死在代码里
Example:增加了付款方式却不更改原代码
template method 模板模式:
做事的步骤一样,但具体方法不同
共性的步骤在抽象类内公共实现,差异化步骤在各个子类中实现
利用了继承和重写
Example:
iterator/iterable 迭代器:
不管对象被放进哪里,都应该提供同样的遍历方式
让自己的集合类实现Iterable接口,并实现自己的独特Iterator迭代器(hasNext, next, remove),允许客户端利用这个 迭代器进行显式或隐式的迭代遍历
visitor 访客模式:
对特定类型的object的特定操作(visit),在运行时将 二者动态绑定到一起,该操作可以灵活更改,无需更改被visit的类
本质上:将数据和作用于数据上的某种/些特定操作分离开来。
Example:
从结构上看与迭代器模式相同,但实现方法不同:
与策略模式都是建立两个对象的动态联系,但是所站角度不同:
各种模式对比: