设计原则
完美的设计部署包罗万象无所不有,而是完整自洽不可精简
高内聚 低耦合
高内聚表示某个特定的软件模块——无论是子程序,一个类型还是一个类库,都应该完成一系列极为相关的功能。
类似于化学中分子之间的吸引力。
内聚的标准从高到低,内聚越高说明软件设计的越好。
高内聚意味着高可维护行和可重用行,因为这些模块的外部依赖很少。
耦合用来度量两个软件模块之间的依赖程度,如果修改样A模块的同时也要修改B模块,那么这两个模块就是耦合的。
低耦合并不是说腻的模块应该与其他模块完全隔绝,模块之间应该通信,不过应该依赖于设计良好且不易改变的接口。
分离关注点
分离关注点的核心在于将系统拆分成各个不相同且最好没有重叠的功能。每个系统中的功能表示一个关注点,一次只处理一个关注点,并不是说把其他关注点抛弃,而是从这个模块的角度考虑,其他关注点都是不相关的。
模块化和信息隐藏。
模块只有公开接口暴露的成员才能被其他模块使用。
信息隐藏是指使用度过的公开接口因此软件模块的实现细节。
面向对象
找到合适的对象,尽量降低耦合,保证代码重用。
高级原则
开放/关闭原则
模块应该对扩展开发,对修改关闭。
再面向对象中,最好的方式是提供固定接口,然后让所有可能发生变化的类实现该接口。
里氏替换原则
当某个类派生自某个现有类型时,派生类型应该能够用于任何可以使用到父类的地方,就是多态。
换句话,子类可以替代基类使用。
依赖倒置原则
高层次的组件不应该依赖于低层次的组件,二者都应依赖于接口。
抽象不应该依赖于细节,细节应该依赖于抽象。
原则中的倒置,表示在实现过程中,应该采用自顶向下的方式,且应该关注于高层次此模块的工作流,而不是低层次模块的具体实现。
设计模式
模式用于解决方案中两个侧面上:实现,架构。由此引申出两种模式,设计模式和架构模式。
设计模式
一种设计模式就是一个已知且被广泛关注的核心解决方案,适用于解决一类实现过程中出现的专门的问题。
首先应该有问题,再从设计模式中选择一种模式来尝试解决。
依赖注入
控制反转和依赖注入可以认为时同义词,不过在字面上不是同义词,控制反转是指原则,而依赖注入则代表了原则的应用。
::: tip “简单是一切之本”这句话也叫做KISS(KeepSimple,Stupid)。 :::
::: tip 不要重复你自己(n、Repeat№刘f,DRY):指降低应用程序中的重复,且建 议对于同样的信息,仅在一个位置存放· ::: ::: tip 一次且仅一次(“andlyOnce,OAOO):指降低同一个应用程序中编写同样 代码的次数· ::: ::: tip 你不会用到它(YouArentGonnaNeedlt,YAGNI):指仅当不可避免需要且没有 其他解决办法时,再向程序中添加新功能· :::