From 0967a9ab23771596ee3122e92fab321d8f122066 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Fri, 16 Mar 2018 23:38:49 +0800 Subject: [PATCH] auto commit --- notes/设计模式.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/notes/设计模式.md b/notes/设计模式.md index cdfec950..aaa3427b 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -51,15 +51,15 @@ **4. 设计原则** -**封装变化** 在这里变化的是鸭子叫和飞行的行为方式。 +封装变化 :在这里变化的是鸭子叫和飞行的行为方式。 -**针对接口编程,而不是针对实现编程** 变量声明的类型为父类,而不是具体的某个子类。父类中的方法实现不在父类,而是在各个子类。程序在运行时可以动态改变变量所指向的子类类型。 +针对接口编程,而不是针对实现编程 :变量声明的类型为父类,而不是具体的某个子类。父类中的方法实现不在父类,而是在各个子类。程序在运行时可以动态改变变量所指向的子类类型。 运用这一原则,将叫和飞行的行为抽象出来,实现多种不同的叫和飞行的子类,让子类去实现具体的叫和飞行方式。

-**多用组合,少用继承** 组合也就是 has-a 关系,通过组合,可以在运行时动态改变实现,只要通过改变父类对象具体指向哪个子类即可。而继承就不能做到这些,继承体系在创建类时就已经确定。 +多用组合,少用继承:组合也就是 HAS-A 关系,通过组合,可以在运行时动态改变实现,只要通过改变父类对象具体指向哪个子类即可。而继承就不能做到这些,继承体系在创建类时就已经确定。 运用这一原则,在 Duck 类中组合 FlyBehavior 和 QuackBehavior 类,performQuack() 和 performFly() 方法委托给这两个类去处理。通过这种方式,一个 Duck 子类可以根据需要去初始化 FlyBehavior 和 QuackBehavior 的子类对象,并且也可以动态地进行改变。 @@ -71,7 +71,7 @@ **6. 模式定义** -**策略模式** 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 +策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 **7. 实现代码** @@ -202,7 +202,7 @@ FlyBehavior.FlyNoWay **5. 设计原则** -**为交互对象之间的松耦合设计而努力** :当两个对象之间松耦合,它们依然可以交互,但是不清楚彼此的细节。由于松耦合的两个对象之间互相依赖程度很低,因此系统具有弹性,能够应对变化。 +为交互对象之间的松耦合设计而努力:当两个对象之间松耦合,它们依然可以交互,但是不清楚彼此的细节。由于松耦合的两个对象之间互相依赖程度很低,因此系统具有弹性,能够应对变化。 **6. 实现代码** @@ -334,7 +334,7 @@ StatisticsDisplay.update:1.0 1.0 1.0 **5. 设计原则** -**类应该对扩展开放,对修改关闭。** 也就是添加新功能时不需要修改代码。在本章问题中该原则体现在,饮料可以动态添加新的配料,而不需要去修改饮料的代码。观察则模式也符合这个原则。不可能把所有的类设计成都满足这一原则,应当把该原则应用于最有可能发生改变的地方。 +类应该对扩展开放,对修改关闭:也就是添加新功能时不需要修改代码。在本章问题中该原则体现在,饮料可以动态添加新的配料,而不需要去修改饮料的代码。观察则模式也符合这个原则。不可能把所有的类设计成都满足这一原则,应当把该原则应用于最有可能发生改变的地方。 **6. Java I/O 中的装饰者模式** @@ -513,7 +513,7 @@ PizzaStore 有 orderPizza() 方法,顾客可以用它来下单。下单之后 **5. 设计原则** -**依赖倒置原则** :要依赖抽象,不要依赖具体类。听起来像是针对接口编程,不针对实现编程,但是这个原则说明了:不能让高层组件依赖底层组件,而且,不管高层或底层组件,两者都应该依赖于抽象。例如,下图中 Pizza 是抽象类,PizzaStore 和 Pizza 子类都依赖于 Pizza 这个抽象类。 +依赖倒置原则:要依赖抽象,不要依赖具体类。听起来像是针对接口编程,不针对实现编程,但是这个原则说明了:不能让高层组件依赖底层组件,而且,不管高层或底层组件,两者都应该依赖于抽象。例如,下图中 Pizza 是抽象类,PizzaStore 和 Pizza 子类都依赖于 Pizza 这个抽象类。

@@ -1052,7 +1052,7 @@ gobble! **5. 设计原则** -**最少知识原则** :只和你的密友谈话。也就是客户对象所需要交互的对象应当尽可能少。 +最少知识原则:只和你的密友谈话。也就是客户对象所需要交互的对象应当尽可能少。 **6. 代码实现** @@ -1086,7 +1086,7 @@ prepareRecipe() 方法就是模板方法,它确定了其它四个方法的具 **5. 设计原则** -**好莱坞原则** :别调用(打电话给)我们,我们会调用(打电话给)你。这一原则可以防止依赖腐败,即防止高层组件依赖低层组件,低层组件又依赖高层组件。该原则在模板方法的体现为,只有父类会调用子类,子类不会调用父类。 +好莱坞原则:别调用(打电话给)我们,我们会调用(打电话给)你。这一原则可以防止依赖腐败,即防止高层组件依赖低层组件,低层组件又依赖高层组件。该原则在模板方法的体现为,只有父类会调用子类,子类不会调用父类。 **6. 钩子** @@ -1787,7 +1787,7 @@ No gumball dispensed # 与设计模式相处 -定义:在某 **情境** 下,针对某 **问题** 的某种 **解决方案**。 +定义:在某情境下,针对某问题的某种解决方案。 过度使用设计模式可能导致代码被过度工程化,应该总是用最简单的解决方案完成工作,并在真正需要模式的地方才使用它。