设计模式之抽象工厂模式

有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象工厂
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());
计算机