Skip to content

Commit

Permalink
调整设计模式说明顺序及格式,提高文档可读性
Browse files Browse the repository at this point in the history
  • Loading branch information
guanguans committed Apr 30, 2024
1 parent fb50f6d commit 34e55c0
Showing 1 changed file with 32 additions and 32 deletions.
64 changes: 32 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
<!-- TOC updateOnSave:false -->

- [介绍](#介绍)
- [注意](#注意)
- [设计模式的类型](#设计模式的类型)
- [注意](#注意)
- [设计模式的类型](#设计模式的类型)
- [创建型设计模式](#创建型设计模式)
- [🏠简单工厂模式(Simple Factory)](#简单工厂模式simple-factory)
- [🏭工厂方法模式(Factory Method)](#工厂方法模式factory-method)
Expand All @@ -39,13 +39,13 @@
- [💡策略模式(Strategy)](#策略模式strategy)
- [💢状态模式(State)](#状态模式state)
- [📒模板方法模式(Template Method)](#模板方法模式template-method)
- [总结](#总结)
- [贡献](#贡献)
- [License](#license)
- [总结](#总结)
- [贡献](#贡献)
- [License](#license)

<!-- /TOC -->

# 介绍
## 介绍

设计模式是反复出现问题的解决方案,**如何解决某些问题的指导方针**。它们并不是可以插入应用程序就可以等待神奇发生的类、包或者库。相反它是如何在某些情况下解决某些问题的指导原则。

Expand All @@ -70,7 +70,7 @@
* [结构型](#structural-design-patterns)
* [行为型](#behavioral-design-patterns)

# [](#creational-design-patterns)创建型设计模式
## [](#creational-design-patterns)创建型设计模式

通俗解释:

Expand All @@ -87,7 +87,7 @@
* [原型模式(Prototype)](#-prototype)
* [单例模式(Singleton)](#-singleton)

## 🏠简单工厂模式(Simple Factory)
### 🏠简单工厂模式(Simple Factory)

现实生活中的例子:

Expand Down Expand Up @@ -164,7 +164,7 @@ $door2 = DoorFactory::makeDoor(50, 100);

当创建一个对象不仅仅是一些分配而且涉及一些逻辑时,将它放在专用工厂中而不是在任何地方重复相同的代码是有意义的。

## 🏭工厂方法模式(Factory Method)
### 🏭工厂方法模式(Factory Method)

现实生活中的例子:

Expand Down Expand Up @@ -257,7 +257,7 @@ $marketingManager->takeInterview(); // Output: Asking about community building.

在类中有一些通用处理但在运行时动态决定所需的子类时很有用。换句话说,当客户端不知道它可能需要什么样的子类时。

## 🔨抽象工厂模式(Abstract Factory)
### 🔨抽象工厂模式(Abstract Factory)

现实生活中的例子:

Expand Down Expand Up @@ -388,7 +388,7 @@ $expert->getDescription(); // Output: I can only fit iron doors

当涉及到不那么简单的,存在相互依赖关系的创建逻辑时使用

## 👷建造者模式
### 👷建造者模式

现实生活中的例子:

Expand Down Expand Up @@ -499,7 +499,7 @@ $burger = (new BurgerBuilder(14))

当一个对象可能存在几种类型并避免构造函数伸缩时使用。与工厂模式的主要区别在于:当创建是一步过程时,将使用工厂模式,而当创建是多步骤过程时,将使用建造者模式。

## 🐑原型模式(Prototype)
### 🐑原型模式(Prototype)

现实生活中的例子:

Expand Down Expand Up @@ -573,7 +573,7 @@ echo $cloned->getCategory(); // Mountain sheep

当需要一个与现有对象类似的对象时,或者与克隆相比,创建的成本会很高。

## 💍单例模式(Singleton)
### 💍单例模式(Singleton)

现实生活中的例子:

Expand Down Expand Up @@ -633,7 +633,7 @@ $president2 = President::getInstance();
var_dump($president1 === $president2); // true
```

# [](#structural-design-patterns)结构型设计模式
## [](#structural-design-patterns)结构型设计模式

通俗解释:

Expand All @@ -651,7 +651,7 @@ var_dump($president1 === $president2); // true
* [享元模式(Flyweight)](#-flyweight)
* [代理模式(Proxy)](#-proxy)

## 🔌适配器模式(Adapter)
### 🔌适配器模式(Adapter)

现实生活中的例子:

Expand Down Expand Up @@ -742,7 +742,7 @@ $hunter = new Hunter();
$hunter->hunt($wildDogAdapter);
```

## 🚡桥梁模式(Bridge)
### 🚡桥梁模式(Bridge)

现实生活中的例子:

Expand Down Expand Up @@ -843,7 +843,7 @@ echo $about->getContent(); // "About page in Dark Black";
echo $careers->getContent(); // "Careers page in Dark Black";
```

## 🌿组合模式(Composite)
### 🌿组合模式(Composite)

现实生活中的例子:

Expand Down Expand Up @@ -978,7 +978,7 @@ $organization->addEmployee($jane);
echo "Net salaries: " . $organization->getNetSalaries(); // Net Salaries: 27000
```

## ☕装饰模式(Decorator)
### ☕装饰模式(Decorator)

现实生活中的例子:

Expand Down Expand Up @@ -1101,7 +1101,7 @@ echo $someCoffee->getCost(); // 20
echo $someCoffee->getDescription(); // Simple Coffee, milk, whip, vanilla
```

## 📦门面模式(Facade)
### 📦门面模式(Facade)

现实生活中的例子:

Expand Down Expand Up @@ -1196,7 +1196,7 @@ $computer->turnOn(); // Ouch! Beep beep! Loading.. Ready to be used!
$computer->turnOff(); // Bup bup buzzz! Haah! Zzzzz
```

## 🍃享元模式(Flyweight)
### 🍃享元模式(Flyweight)

现实生活中的例子:

Expand Down Expand Up @@ -1280,7 +1280,7 @@ $shop->serve();
// Serving tea to table# 5
```

## 🎱代理模式(Proxy)
### 🎱代理模式(Proxy)
现实生活中的例子:

> 你有没有用过门禁卡进门?打开该门有多种选择,即可以使用门禁卡或按下绕过安检的按钮打开。门的主要功能是打开,但在它上面添加了一个代理来添加一些功能。让我用下面的代码示例更好地解释它。
Expand Down Expand Up @@ -1363,7 +1363,7 @@ $door->close(); // Closing lab door

另一个例子是某种数据映射器实现。例如,我最近使用这种模式为 MongoDB 制作了一个 ODM(对象数据映射器),我在使用魔术方法`__call()`围绕 mongo 类编写了一个代理。所有方法调用被代理到原始 mongo 类,检索结果被原样返回。但在`find``findOne`的情况下,数据被映射到所需的类对象,返回这个对象来代替`Cursor`

# [](#behavioral-design-patterns)行为型设计模式
## [](#behavioral-design-patterns)行为型设计模式

通俗解释:

Expand All @@ -1384,7 +1384,7 @@ $door->close(); // Closing lab door
* [状态模式(State)](#-state)
* [模板方法模式(Template Method)](#-template-method)

## 🔗责任链模式(Chain Of Responsibilities)
### 🔗责任链模式(Chain Of Responsibilities)

现实生活中的例子:

Expand Down Expand Up @@ -1489,7 +1489,7 @@ $bank->pay(259);
// Paid 259 using Bitcoin!
```

## 👮命令行模式(Command)
### 👮命令行模式(Command)

现实生活中的例子:

Expand Down Expand Up @@ -1613,7 +1613,7 @@ $remote->submit($turnOff); // Darkness!

命令模式还可用于实现基于事务的系统。当你一执行命令就持续维持命令历史记录的情况下。如果成功执行了最后一个命令,一切都很好,否则只需要遍历历史记录持续在已经执行过的命令上执行`undo`

## ➿迭代器模式(Iterator)
### ➿迭代器模式(Iterator)

现实生活中的例子:

Expand Down Expand Up @@ -1724,7 +1724,7 @@ foreach($stationList as $station) {
$stationList->removeStation(new RadioStation(89)); // Will remove station 89
```

## 👽中介者模式(Mediator)
### 👽中介者模式(Mediator)

现实生活中的例子:

Expand Down Expand Up @@ -1802,7 +1802,7 @@ $jane->send('Hey!');
// Feb 14, 10:58 [Jane]: Hey!
```

## 💾备忘录模式(Memento)
### 💾备忘录模式(Memento)

现实生活中的例子:

Expand Down Expand Up @@ -1894,7 +1894,7 @@ $editor->restore($saved);
$editor->getContent(); // This is the first sentence. This is second.
```

## 😎观察者模式(Observer)
### 😎观察者模式(Observer)

现实生活中的例子:

Expand Down Expand Up @@ -1991,7 +1991,7 @@ $jobPostings->addJob(new JobPost('Software Engineer'));
// Hi Jane Doe! New job posted: Software Engineer
```

## 🏃访问者模式(Visitor)
### 🏃访问者模式(Visitor)

现实生活中的例子:

Expand Down Expand Up @@ -2141,7 +2141,7 @@ $dolphin->accept($speak); // Tuut tutt tuutt!
$dolphin->accept($jump); // Walked on water a little and disappeared
```

## 💡策略模式(Strategy)
### 💡策略模式(Strategy)

现实生活中的例子:

Expand Down Expand Up @@ -2220,7 +2220,7 @@ $sorter = new Sorter(new QuickSortStrategy());
$sorter->sort($dataset); // Output : Sorting using quick sort
```

## 💢状态模式(State)
### 💢状态模式(State)

现实生活中的例子:

Expand Down Expand Up @@ -2320,7 +2320,7 @@ $editor->type('Fifth line');
// fifth line
```

## 📒模板方法模式(Template Method)
### 📒模板方法模式(Template Method)

现实生活中的例子:

Expand Down

0 comments on commit 34e55c0

Please sign in to comment.