工厂方法模式
官方介绍
工厂模式数据创建型模式
工厂模式在创建对象时不会对客户端暴露创建逻辑,并且是通过使用共同的接口指向新创建的对象
工厂方法模式因为只围绕一类接口来进行对象的创建与使用,使用场景更简单和单一,在实际的项目中使用频率反而比抽象工厂模式更高。
UML类图
实现操作
interface KungFu
{
// 出招
public function Move();
}
class WuDang implements KungFu {
public function move()
{
echo '使用太极拳';
}
}
interface WuLin
{
// 派出
public function dispatch();
}
abstract class WuLinFactory implements WuLin
{
// 提供进攻的方法
public abstract function attack();
public function dispatch()
{
return $this->attack();
}
}
class WuDangFactory extends WuLinFactory
{
public function attack(): WuDang
{
return new WuDang();
}
}
// 使用方式
$wuDangFactory = new WuDangFactory();
$wuDangFactory->attack()->move();
工厂模式的职责
- 封装对象创建的过程,提升创建对象方法的可复用性。
- 将使用与创建实现分离,工厂只负责创建的逻辑。
- 尽可能封装创建对象过程中所遇见的所有可能变化。
优势
1. 为了把对象的创建和使用过程分开,降低代码耦合性。
2. 减少重复的代码。
3. 统一管理创建对象的不同实现逻辑。