目录

面向对象7大设计原则概述(原理&丰富实例)

1)单一职责原则

2)开闭原则

3)里氏代换原则

4)依赖倒转原则

5)接口隔离原则

6)合成复用原则 

7)迪米特法则(LoD) 

*本部分小结 

软件的可维护性和可复用性较低的4大基本体现

一个好的系统设计应该具有怎样的性质

软件的可维护性和可复用性

UML图之类图


随着软件规模扩大、需求不断变化,写出具有可扩展性、可复用性、可维护性、可靠性、安全性、可伸缩性的优雅程序是要解决的问题。需运用良好工具、定义良好过程、仔细建模(软件体系结构)才能设计出优雅程序。软件体系结构是软件整体结构与组件的抽象高层描述,用于指导大型软件设计;无大型软件开发经验者需掌握软件编程的最佳实践(设计模式)。将高层体系结构与低层设计模式结合,讲解软件系统开发是本课程的核心任务。


面向对象7大设计原则概述(原理&丰富实例)

软件设计方案 总体架构 软件设计体系结构_软件设计方案 总体架构

1)单一职责原则

 

软件设计方案 总体架构 软件设计体系结构_软件设计方案 总体架构_02

高内聚:类里面功能尽量往凝练、单一的方向走

低耦合:模块之间避免太多交叉,防止灵活性变差 

软件设计方案 总体架构 软件设计体系结构_面向对象编程_03

 B/S一般用于服务端 | getConnection连接数据库 | findUser查询数据库

软件设计方案 总体架构 软件设计体系结构_复用_04

2)开闭原则

软件设计方案 总体架构 软件设计体系结构_软件设计方案 总体架构_05

开闭原则的定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立类

软件设计方案 总体架构 软件设计体系结构_软件设计方案 总体架构_06

软件设计方案 总体架构 软件设计体系结构_java_07

软件设计方案 总体架构 软件设计体系结构_java_08

比如Unity中的地图实例化,将一些类抽象化成一个类,赋予单代表值,根据代表值的不同,调用对应的功能

3)里氏代换原则

软件设计方案 总体架构 软件设计体系结构_复用_09

软件设计方案 总体架构 软件设计体系结构_java_10

软件设计方案 总体架构 软件设计体系结构_复用_11

MD5码+盐值,密码不容易被破译 

4)依赖倒转原则

软件设计方案 总体架构 软件设计体系结构_软件开发_12

软件设计方案 总体架构 软件设计体系结构_软件开发_13

 

软件设计方案 总体架构 软件设计体系结构_软件设计方案 总体架构_14

直接以代码避开XML文件去实现

软件设计方案 总体架构 软件设计体系结构_java_15

软件设计方案 总体架构 软件设计体系结构_java_16

在web项目的开源框架中用的较多 

 

软件设计方案 总体架构 软件设计体系结构_软件开发_17

软件设计方案 总体架构 软件设计体系结构_面向对象编程_18

软件设计方案 总体架构 软件设计体系结构_面向对象编程_19

5)接口隔离原则

软件设计方案 总体架构 软件设计体系结构_复用_20

软件设计方案 总体架构 软件设计体系结构_软件设计方案 总体架构_21

软件设计方案 总体架构 软件设计体系结构_软件开发_22

软件设计方案 总体架构 软件设计体系结构_java_23

6)合成复用原则 

软件设计方案 总体架构 软件设计体系结构_java_24

继承存在着更强的依赖性 

软件设计方案 总体架构 软件设计体系结构_软件开发_25

  

通过组合/聚合思想,实现代码的复用 

软件设计方案 总体架构 软件设计体系结构_软件设计方案 总体架构_26

软件设计方案 总体架构 软件设计体系结构_软件开发_27

首选合成复用原则,继承复用靠后 

软件设计方案 总体架构 软件设计体系结构_软件开发_28

软件设计方案 总体架构 软件设计体系结构_面向对象编程_29

软件设计方案 总体架构 软件设计体系结构_软件开发_30

软件设计方案 总体架构 软件设计体系结构_java_31

7)迪米特法则(LoD) 

软件设计方案 总体架构 软件设计体系结构_软件开发_32

 降低程序中类之间的耦合性

 

软件设计方案 总体架构 软件设计体系结构_复用_33

软件设计方案 总体架构 软件设计体系结构_复用_34

软件设计方案 总体架构 软件设计体系结构_软件设计方案 总体架构_35

软件设计方案 总体架构 软件设计体系结构_java_36

 

软件设计方案 总体架构 软件设计体系结构_复用_37

软件设计方案 总体架构 软件设计体系结构_复用_38

软件设计方案 总体架构 软件设计体系结构_面向对象编程_39

软件设计方案 总体架构 软件设计体系结构_面向对象编程_40

软件设计方案 总体架构 软件设计体系结构_软件开发_41

软件设计方案 总体架构 软件设计体系结构_面向对象编程_42

软件设计方案 总体架构 软件设计体系结构_面向对象编程_43

软件设计方案 总体架构 软件设计体系结构_软件开发_44

软件设计方案 总体架构 软件设计体系结构_java_45

*本部分小结 

同时满足是不可能的,只能优化博弈,做一个最优的选择

软件设计方案 总体架构 软件设计体系结构_java_46

软件设计方案 总体架构 软件设计体系结构_java_47


软件的可维护性和可复用性较低的4大基本体现

过于僵硬 (Rigidity)
过于脆弱 (Fragility)
复用率低 (Immobility)
黏度过高 (Viscosity)


一个好的系统设计应该具有怎样的性质

可扩展性 (方便添加新功能,或修改当前功能)

灵活性 (可依据客户不同的要求进行配置)

可插拔性 (增加或减少功能,不影响其他功能的应用)


软件的可维护性和可复用性

软件的复用(Reuse)或重用拥有众多优点,如可以提高软件的开发效率,提高软件质量,节约开发成本,恰当的复用还可以改善系统的可维护性。

面向对象设计复用的目标在于实现支持可维护性的复用。

在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。

面向对象设计原则和设计模式也是对系统进行合理重构的指南针,重构(Refactoring)是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。


UML图之类图

软件设计方案 总体架构 软件设计体系结构_java_48