An open API service indexing awesome lists of open source software.

https://github.com/hezhizheng/read-php-design-pattern

php 设计模式笔记
https://github.com/hezhizheng/read-php-design-pattern

Last synced: about 1 month ago
JSON representation

php 设计模式笔记

Awesome Lists containing this project

README

          

# PHP设计模式笔记
- 该仓库为个人笔记,建议阅读以下原文
- [DesignPattern](https://github.com/hoohack)
- [http://easy-tips.tigerb.cn/](http://easy-tips.tigerb.cn/)
- [https://xueyuanjun.com/books/php-design-pattern](https://xueyuanjun.com/books/php-design-pattern)

- 慢啃 -> 读懂理解 -> 动手敲代码 -> 回顾

## 设计模式

###### 面向对象的三大特性
- 封装
- 继承
- 多态

###### 面向对象的设计原则
- 对接口编程,不要对实现编程
- 使用对象之间的组合,减少对继承的使用
- 抽象用于不同的事物,而接口用于事物的行为

###### 设计模式的设计原则
- 开闭原则:对扩展开放,对修改封闭
+ mean: 实例的内部不可修改,但可以增加新功能
- 依赖倒转:对接口编程,依赖于抽象而不依赖于具体
+ mean: 就是把公共的拿出来,定义成抽象类、接口、抽象方法,然后大家再去实现这个抽
象,实现的方法各有不同,各个实体相互独立没有依赖,各个实体离开谁都能活
- 接口隔离:使用多个接口,而不是对一个接口编程,去依赖降低耦合
+ mean: 就是抽象再抽象
- 最少知道:减少内部依赖,尽可能的独立
+ mean: 实现依赖注入容器,把依赖的实体注入到一个实例(所谓容器)
- 合成复用:多个独立的实体合成聚合,而不是使用继承
+ mean:尽可能不用继承,使用以上三种方式构成代码结构
- 里氏代换:超类(父类)出现的地方,派生类(子类)都可以出现
+ mean:能用父类实现的子类也能实现

###### 简单设计原则
- 通过所有测试:及需求为上
- 尽可能的消除重复:高内聚低耦合
- 尽可能的清晰表达:可读性
- 更少代码元素:常量,变量,函数,类,包 …… 都属于代码元素,降低复杂性
- 以上四个原则的重要程度依次降低

> 核心:高内聚松耦合(单一职责),外部依赖,实体对抽象编程,抽象就是分层

###### 接口与抽象类
- 抽象用于不同的事物,而接口用于事物的行为。
- 如:动物是猫与狗的抽象类,猫、狗吃东西、喝水等动作是他们的行为

## 模式划分

+ 模式划分(25)
* 创建型模式实例(5)
- [单例模式]
- [工厂模式]
- [抽象工厂模式]
- [原型模式]
- [建造者模式]
* 结构型模式实例(8)
- [桥接模式]
- [享元模式]
- [外观模式]
- [适配器模式]
- [装饰器模式]
- [组合模式]
- [代理模式]
- [过滤器模式]
* 行为型模式实例(12)
- [x] [模板模式]
- [x] [策略模式]
- [ ] [状态模式]
- [x] [观察者模式]
- [x] [责任链模式]
- [x] [访问者模式]
- [x] [解释器模式]
- [ ] [备忘录模式]
- [x] [命令模式]
- [ ] [迭代器模式]
- [x] [中介者器模式]
- [x] [空对象模式]