面向对象系统分析与设计(7)
1. 面向对象的六大设计原则
- 单一职责,single responsibility principle,SRP
- 一个类,只做一件事。
- 开闭原则,open close principle,OCP
- 对扩展开放,对修改封闭,保护既有系统。
- 是 OO 设计的真正核心。
- 里氏替换原则,liskov substitution principle,LSP
- 子类可以拓展父类的功能,但不能修改父类原有的功能。
- 接口隔离原则,interface segregation principle,ISP
- 接口间的依赖性要小;比如一个类要实现某功能时,如果接入接口 A 和接口 B,然而只有 A 的功能是必须的,但因为 A 和 B 的依赖性,接入 B 是完全没有必要的,修改的办法就是降低 A、B 间的依赖。
- 迪米特原则,law of demeter,LOD
- 陌生的类不要作为局部变量的形式出现在类的内部,耦合性会变高。
- DIP原则,dependency inversion principle。
- 模块设计、细节和策略应该依赖于抽象,抽象的稳定性决定了系统的稳定性。
- 变量不应该持有指向具体类的指针或引用。
- 类不应该从具体类派生。
- 任何方法都不应该覆写它的任何基类中已经实现了的方法。
2. 用户界面设计
2.1 用户界面设计原则
- 布局:主要有 top、bottom、middle,要考虑 size、shape、输入框等
- content awareness:大概指主题、信息之类的。
- 审美。
- 用户体验。
- 连贯性:满足用户期待、降低学习曲线等
- 不费力:从进入主页面到功能页面,建议不超过三层。
2.2 用户界面设计过程
- 应用场景开发
- 考虑哪些步骤、UI、模板、information 等。
- 接口结构的设计
- 列出树状 menu 之类的工作。
- 接口标准的设计
- 列出 interface 的细节,包括 objects、actions、icons 等。
- 接口模板设计
- 包括 HTML 模板等。
- 接口评估
- 交互评估、使用测试等。
2.3 设计使用指南
- 首先假设用户没有读过手册、没有经过培训等。
- 控制流程要清晰、便于理解。
- 避免错误。
- 保持语法一致性。
- 考虑添加快捷键。
- 图形化操作。
2.4 设计 input 和 output
input 目标:尽可能简单地将信息传递到系统中。
output 目标:仅将 needed 的信息导出,考虑 report 的使用场景等。