简单工厂模式
把对象的创建和使用的过程分开
class Phone
{
public function makePhone($phone)
{
return (new $phone)->getPhone();
}
}
class Xiaomi
{
public function getPhone()
{
echo 'get a xiaomi phone';
}
}
class Huawei
{
public function getPhone()
{
echo 'get a huawei phone';
}
}
$phone = new Phone();
$phone->makePhone('Xiaomi');
$phone->makePhone('Huawei');
工厂方法模式
主要用于限制类的公用方法
interface Phone
{
public function makePhone();
}
class Xiaomi implements Phone
{
public function makePhone()
{
echo 'get a xiaomi phone';
}
}
class Huawei implements Phone
{
public function makePhone()
{
echo 'get a huawei phone';
}
}
$xiaomi = new Xiaomi();
$xiaomi->makePhone();
$huawei = new Huawei();
$huawei->makePhone();
抽象工厂模式
工厂方法模式 + 简单工厂模式
interface Factory
{
public function makePhone();
public function makePc();
}
class Xiaomi implements Factory
{
public function makePhone()
{
echo 'get a xiaomi phone';
}
public function makePc()
{
echo 'get a xiaomi pc';
}
}
class Huawei implements Factory
{
public function makePhone()
{
echo 'get a huawei phone';
}
public function makePc()
{
echo 'get a huawei pc';
}
}
$xiaomi = new Xiaomi();
$xiaomi->makePhone();
$xiaomi->makePc();
$huawei = new Huawei();
$huawei->makePhone();
$huawei->makePc();