目的:使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

现实场景:港版手机送的插头无法插在内地插座上,这时候我们需要一个适配器,也就是转换头。这个场景里面,适配器的作用就是让原本不兼容的插头、插座能够一起工作。原本插头是直接插在插座上的,后来改为插头插在适配器(转换头)上,这样遇到不同的兼容性问题,我们只需要增加新的适配器就可以了。

以TP框架为例:在TP所使用的驱动模式,其实可以诠释适配器模式,以数据库为例:

Model(手机) 访问数据库是通过 Db类(插头);

Db类不会直接跟数据库(插座)产生交互,而是会根据不同的数据库(插座)类型调用不同的数据库驱动(转换头,也就是适配器);

我们看看有哪些适配器:

如何学PHP设计模式之适配器模式-创客青年博客

可以看到当插座是Mysql数据库的时候,TP将使用Mysql.class.php(适配器),同理当是Mongo数据库的时候使用的是Mongo.class.php。

而这些适配器类,他们必须实现一组相同的方法,因为面向手机那头的孔是不能变的,即Db类的方法是不能变化的,所以一般而言我们会给适配器和Db类都定义一个接口,以统一这组方法,TP没有定义接口,个人看来是不妥当的。

以上是我个人的见解,欢迎指正。