Skip to content

Commit d30113a

Browse files
committed
内容更新
1 parent c32b8f3 commit d30113a

File tree

4 files changed

+69
-20
lines changed

4 files changed

+69
-20
lines changed

QA.md

+49-8
Original file line numberDiff line numberDiff line change
@@ -2036,16 +2036,16 @@ openssl_random_pseudo_bytes ( int $length [, bool &$crypto_strong ] ) : string
20362036
#### 优点
20372037

20382038
- 对唯一实例的受控访问
2039-
- 缩小名空间
2039+
- 避免全局变量污染
20402040
- 允许对操作和表示精化
2041-
- 允许可变数据的实例
2041+
- 允许可变数目的实例
20422042
- 比类操作更灵活
20432043

20442044
### 抽象工厂模式
20452045

2046-
抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来
2046+
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
20472047

2048-
“工厂”是创建产品(对象)的地方,其目的是将产品的创建与产品的使用分离。抽象工厂模式的目的,是将若干抽象产品的接口与不同主题产品的具体实现分离开。这样就能在增加新的具体工厂的时候,不用修改引用抽象工厂的客户端代码
2048+
“工厂”是创建产品(对象)的地方,其目的是将产品的创建与产品的使用分离。抽象工厂模式的目的,是将若干抽象产品的接口与不同主题产品的具体实现分离开。这样就能在增加新的具体工厂的时候,不用修改引用抽象工厂的客户端代码
20492049

20502050
#### 适用性
20512051

@@ -2064,7 +2064,7 @@ openssl_random_pseudo_bytes ( int $length [, bool &$crypto_strong ] ) : string
20642064

20652065
- 在产品族中扩展新的产品是很困难的,它需要修改抽象工厂的接口
20662066

2067-
### 工厂方法
2067+
### 工厂方法模式
20682068

20692069
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类
20702070

@@ -2076,17 +2076,58 @@ openssl_random_pseudo_bytes ( int $length [, bool &$crypto_strong ] ) : string
20762076

20772077
### 适配器模式
20782078

2079+
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
2080+
2081+
#### 适用性
2082+
2083+
- 你想使用一个已经存在的类,而它的接口不符合你的需求
2084+
- 你想创建一个可以复用的类,改类可以与其他不相关的类或不可预见(可能不兼容)的类协同工作
2085+
- 你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口
2086+
20792087
### 观察者模式
20802088

2089+
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
2090+
2091+
#### 适用性
2092+
2093+
- 当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用
2094+
- 当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变
2095+
- 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之,你不知道这些对象时紧密耦合的
2096+
20812097
### 策略模式
20822098

2083-
### Autoload、Composer 原理
2099+
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化
2100+
2101+
#### 适用性
2102+
2103+
- 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法
2104+
- 需要使用一个算法的不同变体
2105+
- 算法使用客户不应该知道的数据。避免暴露复杂的、与算法相关的数据结构
2106+
- 一个类定义了多种行为,并且这些行为在类的操作中以多个条件语句的形式出现
20842107

20852108
### OOP 思想
20862109

2087-
### 抽象类、接口 分别使用场景
2110+
面向对象程序设计(Object-oriented programming,OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针
2111+
2112+
### 抽象类和接口
2113+
2114+
抽象类可以为项目提供一种组织机制。抽象类不能实例化,只能由具体(可实例化的类)继承抽象类的接口以及它的所有具体属性
2115+
2116+
与大多数抽象类一样,接口也有抽象方法。不过,不能像在抽象类中那样在接口中包含具体方法或变量
2117+
2118+
### 控制反转
2119+
2120+
`控制反转`(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做`依赖注入`(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中
2121+
2122+
### 依赖注入
2123+
2124+
依赖注入是将所依赖的传递给将使用的从属对象(即客户端)。该服务是将会变成客户端的状态的一部分。 传递服务给客户端,而非允许客户端来建立或寻找服务
2125+
2126+
#### 实现方式
20882127

2089-
### 依赖注入实现原理
2128+
- 基于接口。实现特定接口以供外部容器注入所依赖类型的对象
2129+
- 基于 set 方法。实现特定属性的 public set 方法,来让外部容器调用传入所依赖类型的对象
2130+
- 基于构造函数。实现特定参数的构造函数,在新建对象时传入所依赖类型的对象
20902131

20912132
## 架构篇
20922133

README.md

+14-10
Original file line numberDiff line numberDiff line change
@@ -201,16 +201,20 @@
201201

202202
### 设计模式篇
203203

204-
- Autoload、Composer 原理
205-
- OOP 思想
206-
- 抽象类、接口 分别使用场景
207-
- 依赖注入实现原理
208-
- 单例模式
209-
- 工厂模式
210-
- 观察者模式
211-
- 适配器模式
212-
- 依赖注入模式
213-
- 门面模式
204+
- [什么是设计模式](./QA.md#什么是设计模式)
205+
- [如何理解框架](./QA.md#如何理解框架)
206+
- [主要设计模式](./QA.md#主要设计模式)
207+
- [怎样选择设计模式](./QA.md#怎样选择设计模式)
208+
- [单例模式](./QA.md#单例模式)
209+
- [抽象工厂模式](./QA.md#抽象工厂模式)
210+
- [工厂方法模式](./QA.md#工厂方法模式)
211+
- [适配器模式](./QA.md#适配器模式)
212+
- [观察者模式](./QA.md#观察者模式)
213+
- [策略模式](./QA.md#策略模式)
214+
- [OOP 思想](./QA.md#oop-思想)
215+
- [抽象类和接口](./QA.md#抽象类和接口)
216+
- [控制反转](./QA.md#控制反转)
217+
- [依赖注入](./QA.md#依赖注入)
214218

215219
### 架构篇
216220

参考资料.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
- 《Vim 实用技巧》Drew Neil
2222
- 《白帽子讲 Web 安全》吴翰清
2323
- 《设计模式-可复用面向对象软件的基础》Erich Gamma
24+
- 《Learning PHP 设计模式》 William Sanders
2425

25-
- 《Learning PHP设计模式》 William Sanders
2626
- 《企业应用架构模式》Martin Fowler
27-
-大型网站系统与Java中间件开发实践》曾宪杰
27+
-大型网站系统与 Java 中间件开发实践》曾宪杰
2828

2929
## 学习资料
3030

术语对照表.md

+4
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,8 @@ Transactions Per Second(每秒传输的事物处理个数),即服务器每
110110

111111
DDOS 又称为分布式拒绝服务,全称是 Distributed Denial of Service。DDOS 本是利用合理的请求造成资源过载,导致服务不可用
112112

113+
## OOP
114+
115+
面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针
116+
113117
以上内容均摘录自维基百科、百度百科

0 commit comments

Comments
 (0)