常见的 PHP 设计模式2–工厂模式(接口)

工厂模式

工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。

使用工厂模式的好处是,如果你想要更改所实例化的类名等,则只需更改该工厂方法内容即可,不需逐一寻找代码中具体实例化的地方(new处)修改了。为系统结构提供灵活的动态扩展机制,减少了耦合。


常见的 PHP 设计模式1–策略模式(抽象)

策略模式

策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。

策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。


php 中instanceof的使用

作用:

(1)判断一个对象是否是某个类的实例,

(2)判断一个对象是否实现了某个接口。

第一种用法:

1
2
3
4
5
6
<?php   
$obj = new A();
if ($obj instanceof A) {
echo 'A';
}
?>

WebSocket与HTTP

一、相同点

  1. 都是一样基于TCP的,都是可靠性传输协议。
  2. 都是应用层协议。

二、不同点

  1. WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。

  2. WebSocket是需要浏览器和服务器握手进行建立连接的。而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接。

三、联系

WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。


PHP抽象类与接口的区别

一、抽象类:

1 .抽象类是指在 class 前加了 abstract关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类。

2 .抽象类不能被直接实例化。抽象类中只定义(或部分实现)子类需要的方法。子类可以通过继承抽象类并通过实现抽象类中的所有抽象方法,使抽象类具体化。

3 .如果子类需要实例化,前提是它实现了抽象类中的所有抽象方法。如果子类没有全部实现抽象类中的所有抽象方法,那么该子类也是一个抽象类,必须在 class 前面加上 abstract 关键字,并且不能被实例化。