From 8edbeacff79ab7e998659fa3d004130c5c30c0e0 Mon Sep 17 00:00:00 2001
From: CyC2018 <1029579233@qq.com>
Date: Sat, 14 Apr 2018 16:02:13 +0800
Subject: [PATCH] auto commit
---
notes/设计模式.md | 20 +++++++++---------
pics/14cfe8d4-e31b-49e0-ac6a-6f4f7aa06ab6.png | Bin 0 -> 51200 bytes
2 files changed, 10 insertions(+), 10 deletions(-)
create mode 100644 pics/14cfe8d4-e31b-49e0-ac6a-6f4f7aa06ab6.png
diff --git a/notes/设计模式.md b/notes/设计模式.md
index b7e6c76a..93cdd0da 100644
--- a/notes/设计模式.md
+++ b/notes/设计模式.md
@@ -128,13 +128,13 @@ if (uniqueInstance == null) {
uniqueInstance 采用 volatile 关键字修饰也是很有必要的。
-`uniqueInstance = new Singleton();` 这段代码其实是分为三步执行。
+uniqueInstance = new Singleton(); 这段代码其实是分为三步执行。
1. 分配内存空间。
2. 初始化对象。
3. 将 uniqueInstance 指向分配的内存地址。
-但是由于 JVM 具有指令重排的特性,有可能执行顺序变为了 `1>3>2`,这在单线程情况下自然是没有问题。但如果是多线程就有可能 B 线程获得是一个还没有被初始化的对象以致于程序出错。
+但是由于 JVM 具有指令重排的特性,有可能执行顺序变为了 1>3>2,这在单线程情况下自然是没有问题。但如果是多线程就有可能 B 线程获得是一个还没有被初始化的对象以致于程序出错。
所以使用 volatile 修饰的目的是禁止 JVM 的指令重排,保证在多线程环境下也能正常运行。
@@ -178,17 +178,17 @@ public interface Product {
```
```java
-public class ConcreteProduct implements Product{
+public class ConcreteProduct implements Product {
}
```
```java
-public class ConcreteProduct1 implements Product{
+public class ConcreteProduct1 implements Product {
}
```
```java
-public class ConcreteProduct2 implements Product{
+public class ConcreteProduct2 implements Product {
}
```
@@ -249,7 +249,7 @@ public class ConcreteFactory extends Factory {
```
```java
-public class ConcreteFactory1 extends Factory{
+public class ConcreteFactory1 extends Factory {
public Product factoryMethod() {
return new ConcreteProduct1();
}
@@ -272,7 +272,7 @@ public class ConcreteFactory2 extends Factory {
## 类图
-
+
抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂模式只是用于创建一个对象,这和抽象工厂模式有很大不同。
@@ -305,12 +305,12 @@ public class ProductA2 extends AbstractProductA {
```
```java
-public class ProductB1 extends AbstractProductB{
+public class ProductB1 extends AbstractProductB {
}
```
```java
-public class ProductB2 extends AbstractProductB{
+public class ProductB2 extends AbstractProductB {
}
```
@@ -322,7 +322,7 @@ public abstract class AbstractFactory {
```
```java
-public class ConcreteFactory1 extends AbstractFactory{
+public class ConcreteFactory1 extends AbstractFactory {
AbstractProductA createProductA() {
return new ProductA1();
}
diff --git a/pics/14cfe8d4-e31b-49e0-ac6a-6f4f7aa06ab6.png b/pics/14cfe8d4-e31b-49e0-ac6a-6f4f7aa06ab6.png
new file mode 100644
index 0000000000000000000000000000000000000000..54a1f45845778a58af0e777be73148b0952ef700
GIT binary patch
literal 51200
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