工厂模式,顾名思义,如同工厂一样,你把原材料放入工厂中,出来的是成品,而你并不需要知道工厂里做了什么,工厂模式主要用于解耦。个人认为设计模式只能在实战中更好的理解,当前水平有限,欢迎大家交流
简单工厂模式
把对象的创建和使用的过程分开,比如: ClassA 调用 ClassB,那么 ClassA 只调用ClassB 的方法,至于实例化 ClassB 则在工厂内实现。这样既减少了代码的重复使用,也方便对 ClassB de 后期维护。如果 ClassB 实例化过程很复杂,使用简单工厂模式就会发现外部无需关注复杂的实例化,只管调用 ClassB 的方法即可,减少错误
createProduction(); if ($production instanceof Production) { echo 'Nice'; } }}
工厂方法模式
主要用于限制类的公用方法
抽象工厂模式
抽象工厂模式 = 工厂方法模式+简易工厂模式
price = $price; $this->discount = $discount; } /** * @return int */ public function calculatePrice(): int { return $this->price * $this->discount; }}/** * Class PhoneProduct * @package Factory\SimpleFactory */class PhoneProduct implements Product{ /** * @var int */ private $price; /** * PhoneProduct constructor. * @param int $price * @param */ public function __construct(int $price) { $this->price = $price; } /** * @return int */ public function calculatePrice(): int { return $this->price; }}
静态工厂方法
静态方法主要用于构建相同类型的对象
四种工厂模式的优缺点
待补充