From 4f75910c3f5d1601b55c5418bce52d0617bf0286 Mon Sep 17 00:00:00 2001 From: lingfengsan Date: Tue, 6 Mar 2018 16:26:16 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97=20=E5=BA=94=E8=AF=A5=E6=98=AF=E2=80=9C=E9=9A=B6?= =?UTF-8?q?=E5=B1=9E=E8=BF=9B=E7=A8=8B=E2=80=9D=E8=80=8C=E4=B8=8D=E6=98=AF?= =?UTF-8?q?=E2=80=9C=E7=8E=87=E5=B1=9E=E8=BF=9B=E7=A8=8B=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/计算机操作系统.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index e75dbad2..66feae19 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -157,7 +157,7 @@ ### 3. 区别 -- 拥有资源:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问率属进程的资源。 +- 拥有资源:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。 - 调度:线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。 From b59e9117d1c6def8484f17db3d93594e48979509 Mon Sep 17 00:00:00 2001 From: mythsman Date: Tue, 6 Mar 2018 18:06:50 +0800 Subject: [PATCH 2/4] =?UTF-8?q?Update=20=E9=9D=A2=E5=90=91=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=80=9D=E6=83=B3.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加一些常见的其他原则 --- notes/面向对象思想.md | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/notes/面向对象思想.md b/notes/面向对象思想.md index 204d380c..8e27b841 100644 --- a/notes/面向对象思想.md +++ b/notes/面向对象思想.md @@ -4,7 +4,13 @@ * [2. 开放封闭原则](#2-开放封闭原则) * [3. 里氏替换原则](#3-里氏替换原则) * [4. 接口分离原则](#4-接口分离原则) - * [5. 依赖倒置原则](#5-依赖倒置原则) +    * [5. 依赖倒置原则](#5-依赖倒置原则) +* [其他常见原则](#其他常见原则) + * [1. 迪米特法则](#1-迪米特法则) + * [2. 合成复用原则](#2-合成复用原则) + * [3. 共同封闭原则](#3-共同封闭原则) + * [4. 稳定抽象原则](#4-稳定抽象原则) +    * [5. 稳定依赖原则](#5-稳定依赖原则) * [封装、继承、多态](#封装继承多态) * [1. 封装](#1-封装) * [2. 继承](#2-继承) @@ -50,6 +56,37 @@ S.O.L.I.D 是面向对象设计和编程 (OOD&OOP) 中几个重要编码原则 ( 1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象 2. 抽象不应该依赖于细节,细节应该依赖于抽象 +# 其他常见原则 +除了上述的经典原则,在实际开发中还有下面这些常见的设计原则。 + +| 简写 | 全拼 | 中文翻译 | +| -- | -- | -- | +|LoD|   The Law of Demeter   | 迪米特法则 | +|CRP|   The Composite Reuse Principle          | 合成复用原则 | +|CCP|   The Common Closure Principle | 共同封闭原则 | +|SAP| The Stable Abstractions Principle | 稳定抽象原则 | +|SDP| The Stable Dependencies Principle | 稳定依赖原则 | + +## 1. 迪米特法则 + +迪米特法则又叫作最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。 + +## 2. 合成复用原则 + +尽量使用对象组合,而不是继承来达到复用的目的。 + +## 3. 共同封闭原则 + +一起修改的类,应该组合在一起(同一个包里)。如果必须修改应用程序里的代码,我们希望所有的修改都发生在一个包里(修改关闭),而不是遍布在很多包里。 + +## 4. 稳定抽象原则 + +最稳定的包应该是最抽象的包。不稳定的包应该是具体的包。包的抽象程度跟它的稳定性成正比。 + +## 5. 稳定依赖原则 + +包之间的依赖关系都应该是稳定方向依赖的,包要依赖的包要比自己更具有稳定性。 + # 封装、继承、多态 封装、继承、多态是面向对象的三大特性。 From db928f4bde0e32ab5f5c9cd54697f4599e8f4066 Mon Sep 17 00:00:00 2001 From: mythsman Date: Tue, 6 Mar 2018 18:11:40 +0800 Subject: [PATCH 3/4] =?UTF-8?q?Update=20=E9=9D=A2=E5=90=91=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=80=9D=E6=83=B3.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/面向对象思想.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/面向对象思想.md b/notes/面向对象思想.md index 8e27b841..78112a38 100644 --- a/notes/面向对象思想.md +++ b/notes/面向对象思想.md @@ -4,7 +4,7 @@ * [2. 开放封闭原则](#2-开放封闭原则) * [3. 里氏替换原则](#3-里氏替换原则) * [4. 接口分离原则](#4-接口分离原则) -    * [5. 依赖倒置原则](#5-依赖倒置原则) + * [5. 依赖倒置原则](#5-依赖倒置原则) * [其他常见原则](#其他常见原则) * [1. 迪米特法则](#1-迪米特法则) * [2. 合成复用原则](#2-合成复用原则) From 0dcea89ae666d3bd98598bedaf6e2e1c70d47c0e Mon Sep 17 00:00:00 2001 From: mythsman Date: Tue, 6 Mar 2018 18:12:00 +0800 Subject: [PATCH 4/4] =?UTF-8?q?Update=20=E9=9D=A2=E5=90=91=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=80=9D=E6=83=B3.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/面向对象思想.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/面向对象思想.md b/notes/面向对象思想.md index 78112a38..a675add4 100644 --- a/notes/面向对象思想.md +++ b/notes/面向对象思想.md @@ -10,7 +10,7 @@ * [2. 合成复用原则](#2-合成复用原则) * [3. 共同封闭原则](#3-共同封闭原则) * [4. 稳定抽象原则](#4-稳定抽象原则) -    * [5. 稳定依赖原则](#5-稳定依赖原则) + * [5. 稳定依赖原则](#5-稳定依赖原则) * [封装、继承、多态](#封装继承多态) * [1. 封装](#1-封装) * [2. 继承](#2-继承)