敏捷设计

  • Post author:
  • Post category:其他


敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能的简单、干净以及富有表达力

1 设计臭味

1.1 僵化性

是指难以对软件进行改动,即使是简单的改动。如果单一的改动会导致有依赖关系的模块中的连锁改动,那么设计就是僵化的。

1.2 脆弱性

在进行一个改动时,可能会导致程序的说许多地方出现问题。

1.3 顽固性

无法把该部分从系统中分离

1.4 粘滞性

软件粘滞性与环境粘滞性

1.5 不必要的复杂性

1.6 不必要的重复

ctrl+C ctrl+V

1.7 晦涩性

2 面向对象的五个基本原则

2.1 依赖倒装原则

A 高层模块不应该依赖低层模块。两个都应该依赖抽象

B 抽象不依赖细节,细节应该依赖抽象

2.2 理氏代换原则

在软件里,把父类替换成子类,程序的行为没有变化。简单的说 ,子类型必须能够替换掉它们的父类型。

依赖倒转其实可以说是面向对象设计的标识,用哪种语言 来编写程序不重要,如果编写时考虑的都是如何针对细节编程,即程序中所有的依赖关系都是终止与抽象类或者接口,那就是面向对象的设计,反之那就是过程化的设计了

子类型与父类之间的转换

1、子类可以隐士转换为父类(子类替换父类)

2、父类不能转换为子类,如果使用as关键字,子类为空。

2.3 开放封闭原则

是说软件实体(类、模块、函数等等)应该是可以扩展的,但是不可以修改。

1、对于扩展是开放的

2、对于更改是封闭的

怎样可能在不改动模块源代码的情况下去更改它的行为呢?如果不更改一个模块,又怎么能够去改变它的功能你? 抽象

STRATEGY模式

TEMPLATEMETHOD模式

一个模型,如果孤立的看,并不具有真正意义上的有效性。模型的有效性之恩那个通过它的客户程序来表现。

2.4 单一职责原则

一个类只有一个外部原因使他发生改变

之所以会出现单一职责原则就是因为在软件设计时会出现以下类似场景:

T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。也就是说职责P1和P2被耦合在了一起。

2.5 接口隔离原则

使用多个专门的接口比使用单一的总接口要好。

一个类对另外一个类的依赖性应当是建立在最小的接口上的。

一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。

“不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。”这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。

3 UML观



版权声明:本文为u010119630原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。