面向对象软件设计原则,共七种
--------------------------------------
里氏替换原则
L:里氏替换原则(Liskov substitution principle) 继承必须确保父类所拥有的性质在子类中仍然成立。
开闭原则
O:开闭原则(open-closed principle) 软件实体应当对扩展开放,对修改关闭。 即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。
接口隔离原则
I:接口隔离原则(Interface segregation principle) 使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
迪米特法则
迪米特法则(Law of Demeter,LoD)或最少知道原则(Least Knowledge Principle,LKP): 一个对象应当对其他对象保持最少的了解,降低类之间的耦合度。
单一职责原则
S:单一职责原则(single-responsibility principle) 一个类或者模块只负责完成一个职责(或者功能), 避免一个类负责多个功能领域,提高类的可读性、可维护性、可扩展性。
依赖倒置原则
D:依赖倒置原则(Dependency inversion principle) 高层模块不应依赖于低层模块,两者应该依赖于抽象。 抽象不不应该依赖于实现,实现应该依赖于抽象。 要依赖于抽象,不要依赖于具体。 实现类之间的依赖通过抽象(接口或抽象类)进行,避免类之间的高耦合。
合成利用原则
合成复用原则(Composite Reuse Principle,CRP): 尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。 继承会破坏封装、增加耦合,而组合 / 聚合是 “has-a” 关系,更灵活,也更符合开闭原则
表格:七大原则的核心目标总结
| 原则 | 核心目标 | 关键作用 |
|---|---|---|
| 单一职责(S) | 高内聚 | 让类 / 模块只做一件事,降低复杂度 |
| 开闭原则(O) | 可扩展 | 对扩展开放、对修改关闭,减少改代码的风险 |
| 里氏替换(L) | 继承安全 | 子类可以无缝替换父类,不破坏程序逻辑 |
| 接口隔离(I) | 接口精简 | 避免依赖不需要的接口,减少冗余耦合 |
| 依赖倒置(D) | 解耦依赖 | 依赖抽象而非具体实现,提升扩展性 |
| 迪米特法则(LoD) | 低耦合 | 类只和 “朋友” 交流,不依赖不相关的对象 |
| 合成复用(CRP) | 复用灵活 | 优先用组合 / 聚合,而不是继承实现复用 |
软件UI设计原则:
--------------------------------------
尼尔森十大原则
(1)系统可见性原则(Visibility of system status)
保持界面的状态可见,变化可见,内容可见。让用户知道发生了什么,在适当的时间内做出适当的反馈。
比如用户在网页上的任何操作,不论是单击、滚动还是按下键盘,页面应即时给出反馈。
(2)贴近场景原则(Match between system and the real world)
用用户的语言,用词,短语和用户熟悉的概念,而不是系统术语。功能操作符合用户的使用场景。
(3)可控性原则(User control and freedom)
用户经常错误地选择系统功能而且需要明确标识离开这个的“出口”。比如支持撤销和重做的功能。
(4)一致性和标准化原则(Consistency and standards)
遵循平台的惯例。也就是,同一用语、功能、操作保持一致。
(5)防错原则(Error prevention)
更用心的设计防止这类问题发生,在用户可能犯错时进行提醒,比如删除可能造成的后果。
(6)协助记忆原则(Recognition rather than recall)
尽量减少用户对操作目标的记忆负荷,动作和选项都应该是可见的。
用户不必记住一个页面到另一个页面的信息。系统的使用说明应该是可见的或者是容易获取的。
(7)灵活高效原则(Flexibility and efficiency of use)
允许用户进行频繁的操作。 更加便捷灵活的代码和反馈.
(8)审美和简约设计原则(Aesthetic and minimalist design)
不应该包含无关紧要的信息。
(9)容错原则(Help users recognize, diagnose, and recover from errors )
错误信息应该用语言表达(不要用代码),较准确地反应问题所在,
并且提出一个建设性的解决方案。比如404。
(10)人性化帮助原则(Help and documentation)
有必要提供帮助和文档。任何信息应容易去搜索,专注于用户的任务,
列出具体的步骤来进行。帮助性提示最好的方式是:
1、无需提示;2、一次性提示;3、常驻提示;4;帮助文档。