有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象工厂
class System{}
class Soft{}
class MacSystem extends System{}
class MacSoft extends Soft{}
class WinSystem extends System{}
class WinSoft extends Soft{}
/**
* AbstractFactory class[抽象工厂模式]
*/
interface AbstractFactory {
public function CreateSystem();
public function CreateSoft();
}
class MacFactory implements AbstractFactory{
public function CreateSystem()
{
// TODO: Implement CreateSystem() method.
return new MacSystem();
}
public function CreateSoft()
{
// TODO: Implement CreateSoft() method.
return new MacSoft();
}
}
知识兔有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象工厂
class System{}
class Soft{}
class MacSystem extends System{}
class MacSoft extends Soft{}
class WinSystem extends System{}
class WinSoft extends Soft{}
/**
* AbstractFactory class[抽象工厂模式]
*/
interface AbstractFactory {
public function CreateSystem();
public function CreateSoft();
}
class MacFactory implements AbstractFactory{
public function CreateSystem()
{
// TODO: Implement CreateSystem() method.
return new MacSystem();
}
public function CreateSoft()
{
// TODO: Implement CreateSoft() method.
return new MacSoft();
}
}
class WinFactory implements AbstractFactory{
public function CreateSystem()
{
// TODO: Implement CreateSystem() method.
return new WinSystem();
}
public function CreateSoft()
{
// TODO: Implement CreateSoft() method.
return new WinSoft();
}
}
//test
$MacFactory_obj = new MacFactory();
var_dump($MacFactory_obj->CreateSystem());
var_dump($MacFactory_obj->CreateSoft());
$winFactory_obj = new WinFactory();
var_dump($winFactory_obj->CreateSystem());
var_dump($winFactory_obj->CreateSoft());
class WinFactory implements AbstractFactory{
public function CreateSystem()
{
// TODO: Implement CreateSystem() method.
return new WinSystem();
}
public function CreateSoft()
{
// TODO: Implement CreateSoft() method.
return new WinSoft();
}
}
//test
$MacFactory_obj = new MacFactory();
var_dump($MacFactory_obj->CreateSystem());
var_dump($MacFactory_obj->CreateSoft());
$winFactory_obj = new WinFactory();
var_dump($winFactory_obj->CreateSystem());
var_dump($winFactory_obj->CreateSoft());