一、概述
- 简单工厂模式不属于23种标准设计模式,属于一种编程风格
- 通过不同的参数动态的创建一个实例化对象
二、核心
- 通过传入不同的参数获取不同的对象
- 将对象的创建和使用分开
- 单独创建一个类来创建其它类的实例,被创建的类通常具有相同的特性
三、架构图
四、代码示例
<?php
/*
* 简单工厂模式(Sipmple Factory)
*/
interface AnimalInterface
{
public function run();
}
class Cat implements AnimalInterface
{
public function run()
{
return "Cat Run!";
}
}
class Dog implements AnimalInterface
{
public function run()
{
return "Dog Run!";
}
}
Class Simplefactory
{
public function createAnimal($className)
{
switch ($className){
case "Cat":
return new Cat();
case "Dog":
return new Dog();
default:
return false;
}
return new $className();
}
}
$simpleFactory = new Simplefactory();
$obj = $simpleFactory->createAnimal('Cat');
$obj->run();
五、涉及知识点
-
为什么定义接口类?
统一继承工厂子类的格式 -
接口类特性
a. 使用关键字interface定义
b. 使用extence继承接口类
c. 通过使用implements实现接口,必须实现接口类里的所有方法
d. 接口类里所有方法为public
e. 一个类可以同时implments多个接口类
6、总结
- 一个抽象产品类派生多个具体产品类(AnimalInterface=>[CatClass, DogClass])
- 一个具体的工厂类(Simplefactory)
- 一个具体的工厂类创建多个具体的产品实例(Simplefactory=[CatClass, DogClass]})