工厂模式(Factory)
介绍:
创建型模式,定义一个工厂类,在实例化类的时候,由调用类决定实例化哪个类,使其创建过程延迟到调用类进行。
何时使用:不同条件下创建不同的实例。
优点:
- 调用者只需要知道对象的名称就可以创建对象;
- 扩展性高,新增一个产品,只要扩展一个工厂类即可;
- 屏蔽具体实现,调用者只关心接口。
缺点:
新增产品需要增加一个实现类和修改工厂类,增加系统的复杂度。
代码实现:
<?php
interface Animal{
function call();
}
class Cat implements Animal{
function call(){
echo 'miao~~';
}
}
class Dog implements Animal{
function call(){
echo 'wang!';
}
}
class NullAnimal implements Animal{
function call(){
echo 'kaka~~';
}
}
class AnimalFactory {
function getCall($animalType = ''){
$animalType = strtoupper($animalType);
switch($animalType){
case 'CAT':
$call = new Cat();
break;
case 'DOG':
$call = new Dog();
break;
default :
$call = new NullAnimal();
break;
}
return $call;
}
}
$animalFactory = new AnimalFactory();
$animal1 = $animalFactory->getCall('cat');
$animal1->call();
echo '<br>';
$animal2 = $animalFactory->getCall('dog');
$animal2->call();
echo '<br>';
$animal3 = $animalFactory->getCall();
$animal3->call();
echo '<br>';
$animal4 = $animalFactory->getCall('bird');
$animal4->call();
exit;
本文介绍了工厂模式,这是一种创建型设计模式,用于在运行时根据条件动态创建对象。通过工厂类,调用者可以无须知道具体创建的是哪个类的对象,从而实现了解耦和扩展性。代码示例展示了如何使用PHP实现动物工厂,根据传入参数创建不同类型的动物对象(如猫、狗或默认的空动物)。工厂模式虽然增加了系统复杂度,但提高了代码的灵活性和可维护性。
2378

被折叠的 条评论
为什么被折叠?



