静态工厂模式-创建型设计模式 [PHP]

抽象工厂类似,静态工厂模式用来创建一系列互相关联或依赖的对象\n和抽象工厂模式不同的是静态工厂模式只用一个静态方法就解决了所有类型的对象创建

工厂里提供一个静态方法来创建不同的对象实例

final class StaticFactory\n{\n    public static function factory(string $type): Formatter\n    {\n        if ($type == \'number\') {\n            return new FormatNumber();\n        } elseif ($type == \'string\') {\n            return new FormatString();\n        }\n\n        throw new InvalidArgumentException(\'Unknown format given\');\n    }\n}

被生产的产品和前面的抽象工厂/工厂方法 ,基本一样\n先定义一个接口,不同的产品实现这一个接口

适配器模式-结构型设计模式 [PHP]

将某个类的接口转换成与另一个接口兼容。适配器通过将原始接口进行转换,给用户提供一个兼容接口,使得原来因为接口不同而无法一起使用的类可以得到兼容。

下面这个例子Book 和EBook这是两个类型,方法都不一样,通过一个EBookAdapter类转换EBook方法成为Book的方法两个类型的接口

interface Book\n{\n    public function turnPage();\n}\ninterface EBook\n{\n    public function pressNext();\n}

Kindle类实现了EBook

class Kindle implements EBook\n{\n    public function pressNext(){\n    }\n}\nclass EBookAdapter implements Book\n{\n    protected EBook $eBook;\n\n    public function __construct(EBook $eBook)\n    {\n        $this->eBook = $eBook;\n    }\n\n    public function turnPage()\n    {\n        $this->eBook->pressNext();\n    }\n}

转换并使用

$kindle = new Kindle();\n$book = new EBookAdapter($kindle);\n$book->turnPage();