设计模式学习

什么是设计模式:

  1. 设计模式并没有固定的格式,不同的项目有不同的使用情况,不能以一概全,其更偏向于一种理念而非源码;
  2. 设计模式可以更好的优化项目代码(例如提取公用代码封装函数、静态化常用类或者变量的声明以免多次初始化);
  3. 设计模式并非即插即用式的解决方案,而是使代码具有更好的可维护性、可理解性和可扩展性;
  4. 无论如何,设计的架构基础还是业务场景,只有先了解、理解清楚业务,才能更好的构建属于你的代码世界。

设计模式6大原则:

  1. 单一职责原则:一个类只负责一项职责;
  2. 里氏替换原则:子类必须能够替换所有父类使用;
  3. 依赖倒置原则:设计依赖于抽象而不是实现;
  4. 接口隔离原则:接口倾向于小而多,但也需要有限度;
  5. 迪米特法则:一个对象应该对其他对象保持最少的了解;
  6. 开闭原则:对扩展开发,对修改关闭。
6大模式对于PHP而言:
  1. 按接口而不是按实现编程(依赖倒置原则),指的是将变量设置为一个抽象类或接口数据类型的实例,而不是一个具体实现的实例。这对于PHP来说比较困难,在PHP中,不能声明一个变量的数据类型为抽象父类(抽象类或接口),因为不实例化一个类实例,就不能声明数据类型。
  2. 优先选择对象组合而不是类继承(迪米特法则),尽量使用浅继承配合多个类。由于项目越大,需要维护的类和函数越多,使用继承时,容易造成多层嵌套,此时如果修改某个父类,容易造成其子类的变化,层数嵌套越多,影响越大。
设计模式作用、范围和变化
作用 范围 模式名 可能变化的方面
创建型 工厂方法 实例化对象的子类
对象 原型 实例化对象的类
结构型 适配器 对象的接口
对象 适配器、装饰器 对象职责而不派生子类
行为型 模板方法 算法中的步骤
对象 状态 对象状态
对象 策略 算法
对象 职责链 可以满足请求的对象
对象 观察者 依赖于其他对象的对象数;当前可以有多少个依赖对象

你可能感兴趣的:(设计模式&数据结构)