SC: 6章

HIT 软件构造 第6章

在软件工程中的软件维护是交付后修改的软件产品已经纠正了故,提高性能或其他属性

课维护性的常见度量指标:

循环复杂度:测量代码的结构复杂度

代码行数(LOC)

Halstead volume :根据源代码中运算符和操作符的数量(HV)

可维护性指数(ML)

The per of comment lins per module(com)

Depth of Inheritance (继承的深度)

类耦合程度

单元测试覆盖度

模块化设计与模块化原则

模块化程序指将整个程序代码高层次分解为多个部分

设计的目标是将系统划分为模块,并且在组件之间:高内聚,低耦合

评估模块化的五大标准:可分解性,可组合性,可理解性,可持续性,出现异常后的保护。

模块化设计的五条原则:直接映射,尽可能少的接口,尽可能少的接口,显示接口,信息隐藏

Coupling and Cohosion(耦合与聚合)

耦合是模块之间依赖关系的度量,如果两个模块之间的变化可能需要另一个模块的变更,则连个模块之间存在依赖关系。

聚合是衡量一个模块的功能或责任有多强壮程度的一个指标,如果模块的所有元素都朝着相同的目标努力,则模板具有高聚合。

SOLID:单一责任原则,开放封闭原则,Liskov替换原则,接口隔离原则,依赖转置原则.

Creational patterns

 Factory Method pattern

Intent:定义创建对象的接口,让子类决定实例化哪个类

factory 让类将类的实例化推迟到子类

(个人理解)不用个人知道对象是什么具体的类了,只需知道相应的工厂就知道生产对象。


Abstract Factory pattern

抽象工厂只是工厂方法设计的扩展,抽象工厂模式允许更多类型的对象来扩展工厂方法模式。

使用工厂返回可用于创建相关对象集的 工厂

    Builder pattern

将复杂对象的构造与其表示分开,以便相同的构建过程可以创建不同的结果

1.接口中规定出算法的抽象步骤(builder)

2.director规定一个构造算法

3.接口具体的实现


 Structural patterns

Bridge Patterns

将类的功能层次结构与实现层次结构分离

实现可以再运行时切换

proxy patterns

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口

Intent:为其他对象提供一种代理以控制这个对象的访问

主要解决

在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

Composite Pattern

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。

intent :将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性

Oberserver Pattern 

观察者模式:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式

intent :定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

Abstract subject:维护独立列表,当主干改变时通知他们

Abstract observe:定义更新依赖者的协议

ConcreteSubject 为受抚养人管理数据,当主人更改时通知他们

Concrete observers 在收到更新消息后获得新的主体状态


Vistor pattern

在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作

intent :主要将数据结构与数据分离。

State pattern

状态设计模式允许您在一个运行时更改对象的行为或者状态,每个行为都由一个状态类表示,行为可以从一个状态变为另一个状态

意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。

主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。

Memento(备忘录) pattern

意图 :在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象在外保存这个状态,这样可以将对象恢复到该原先保存的状态

Memento 存储Originator 对象的内部状态,Originator 根据需要决定Memento存储那些内部状态。

Originator 创建一个Memento 用以记录当前时刻的内部状态。使用Memento恢复状态

Caretaker 负责保存Memento 不能对Memento内容进行修改。

基于语法的构建:

语法成分:

终端:语法终端文字串

为了描述一串符号,无论它们是字符串还是其他类型的以固定集合中抽取的符号,我们都成为语法的紧凑表示法

语法定义一组字符串:e.gURL的语法将指定HTTP协议中合法URL的一组字符串,文法中的文字称为终端

URL:: = http://'[a-z]+''.'[a-z]+''/'

在这种单线形式下,只有一个非终结符的生产者使用操作符和终端,而一个语法称为正则表达式

Markdown 是一种可以使用普遍文本编辑器编写的标记语言,通过简单的标记语法可以使普通文本内容具有一定的格式

Grammer定义语法规则Parse generator 根据grammer 定义的规则产生一个parser client 利用parse解析文本,看其是否符合语法定义的对其做的各种处理。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值