From baa0b51a133fb0d064589a2dd20b5d29ef59af60 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Fri, 16 Mar 2018 23:30:03 +0800 Subject: [PATCH] auto commit --- notes/设计模式.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/notes/设计模式.md b/notes/设计模式.md index 3016b936..cdfec950 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -501,7 +501,7 @@ CheesePizza 在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。 -下图中,Creator 有一个 anOperation() 方法,这个方法需要用到一组产品类,这组产品类由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 +下图中,Creator 有一个 anOperation() 方法,这个方法需要用到一组产品对象,这组产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。

@@ -617,7 +617,7 @@ ChicagoStyleCheesePizza is making.. **1. 模式定义** -提供一个接口,用于创建 **相关的对象家族** ,而不需要明确指定具体类。 +提供一个接口,用于创建 **相关的对象家族** 。 **2. 模式类图** @@ -627,7 +627,7 @@ ChicagoStyleCheesePizza is making.. 至于创建对象的家族这一概念是在 Client 体现,Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象,在这里这两个对象就有很大的相关性,Client 需要同时创建出这两个对象。 -从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory ,而工厂模式使用了继承。 +从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂模式使用了继承。

@@ -760,7 +760,7 @@ MarinaraSauce **3. 懒汉式-线程不安全** -以下实现中,私有静态变量被延迟化实例化,这样做的好处是,如果没有用到该类,那么就不会实例化私有静态变量,从而节约资源。 +以下实现中,私有静态变量 uniqueInstance 被延迟化实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。 这个实现在多线程环境下是不安全的,如果多个线程能够同时进入`if(uniqueInstance == null)` ,那么就会多次实例化 uniqueInstance。 @@ -831,7 +831,7 @@ public class Singleton { } ``` -考虑下面的实现,也就是只使用了一个 if 语句。在 uniqueInstance == null 的情况下,如果两个线程同时执行 if 语句,那么两个线程就会同时进入 if 语句块内。虽然在 if 语句块内有加锁操作,但是两个线程都会执行 `uniqueInstance = new Singleton();`这条语句,只是早晚的问题,也就是说会进行两次实例化,从而产生了两个实例。因此必须使用双重校验锁,也就是需要使用两个 if 判断。 +考虑下面的实现,也就是只使用了一个 if 语句。在 uniqueInstance == null 的情况下,如果两个线程同时执行 if 语句,那么两个线程就会同时进入 if 语句块内。虽然在 if 语句块内有加锁操作,但是两个线程都会执行`uniqueInstance = new Singleton();`这条语句,只是早晚的问题,也就是说会进行两次实例化,从而产生了两个实例。因此必须使用双重校验锁,也就是需要使用两个 if 判断。 ```java if (uniqueInstance == null) { @@ -962,7 +962,7 @@ Light is on! **2. 模式类图** -适配器类(Adapter)组合一个待适配的对象(Adaptee),Adapter 把操作委托给 Adaptee。 +适配器(Adapter)组合一个适配者(Adaptee),Adapter 把操作委托给 Adaptee。

@@ -1180,11 +1180,11 @@ Tea.addCondiments **2. 模式类图** -- Aggregate 是聚合类,其中 createIterator() 方法可以产生一个 Iterator 对象; +- Aggregate 是聚合类,其中 createIterator() 方法可以产生一个 Iterator; - Iterator 主要定义了 hasNext() 和 next() 方法。 -- Client 组合了 Aggregate 对象,为了迭代遍历 Aggregate 对象,也需要组合 Iterator 对象。 +- Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。