# PRINCIPLES **Repository Path**: joncc/PRINCIPLES ## Basic Information - **Project Name**: PRINCIPLES - **Description**: PRINCIPLES - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-05 - **Last Updated**: 2021-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PROGRAMING PRINCIPLES ## SOLID 面向对象设计原则 > S.O.L.I.D 是面向对象设计和编程 (OOD&OOP) 中几个重要原则的首字母缩写 ``` 1. 单一职责原则 (The Single Responsibility Principle) 修改某个类的理由应该只有一个,如果超过一个,说明类承担不止一个职责,要视情况拆分. 2. 开放封闭原则 (The Open Closed Principle) 软件实体应该对扩展开放,对修改封闭.一般不要直接修改类库源码(即使你有源代码),通过继承等方式扩展. 3. 里氏替代原则 (The Liskov Substitution Principle) 当一个子类的实例能够被替换成任何超类的实例时,它们之间才是真正的 is-a 关系. 4. 依赖倒置原则 (The Dependency Inversion Principle) 高层模块不应该依赖于底层模块,二者都应该依赖于抽象.换句话说,依赖于抽象,不要依赖于具体实现. 5. 接口分离原则 (The Interface Segregation Principle) 不要强迫用户去依赖它们不使用的接口.换句话说,使用多个专门的接口比使用单一的大而全接口要好. ``` ## CAP 原则 > CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency) 可用性(Availability) 分区容错性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾 ``` 1. 一致性 (Consistency) 一致性,即更新操作成功,所有节点在同一时间的数据完全一致. 2. 可用性 (Availability) 可用性,即服务一直可用,而且响应时间正常. 3. 分区容忍性 (Partition tolerance) 分区容忍性,即分布式系统在遇到某节点或网络分区故障时,仍然能够对外提供满足一致性和可用性的服务. ``` ## BASE 理论 > BASE 理论是对于 CAP 理论的延伸,核心思想是即使无法做到强一致性 (Strong Consistency CAP 中的一致性指强一致性),但是可以采用适当的方式达到最终一致性 (Eventual Consistency). BASE 指基本可用 (Basically Available) 软状态 (Soft State) 和最终一致性 (Eventual Consistency). ``` 1. 基本可用 (Basically Available) 基本可用是指分布式系统在出现故障时,允许损失部分可用性,即保证核心可用.比如服务降级. 2. 软状态 (Soft State) 软状态是指允许系统存在中间状态,而该中间状态不会影响系统的整体可用性.分布式存储中一般一份数据至少存三个副本,允许不同节点间副本同步的延迟就是软状态的体现. 3. 最终一致性 (Eventual Consistency) 最终一致性是指系统中的所有数据副本经过一段时间后,最终能够达成一致状态.弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况. ``` ## 康威法则 > Melvin Conway 在 1967 年提出所谓康威法则,指出组织架构和系统架构之间有一种隐含的映射关系: 设计系统的组织,其产生的设计等同于组织之内 组织之间的沟通结构. > 康威法则也可以倒过来阐述: 如果系统架构不支持,你无法建立一个高效的组织;同样,如果你的组织架构不支持,你也无法建立一个高效的系统架构.