引用百度百科:
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
简单的工厂模式:
<?php // 被生产者 class Object { function __construct() { echo __METHOD__; } } // 工厂 class Factory { public static function creatObject() { return new Object(); } } // 不在直接new实例 $obj = Factory::creatObject();
抽象的工厂模式:
<?php /** * Created by PhpStorm. * User: dongh * Date: 2017/11/15 * Time: 22:19 */ header('Content-Type:text/html;charset=utf-8'); interface game { public function play(); } class dota implements game { public function play() { echo "游戏好玩但人不算多"; } } class lol implements game { public function play() { echo "人不少游戏节奏快些"; } } class honor implements game { public function play() { echo "游戏方便床上就能玩"; } } class Factories { public static function create($type) { switch ($type) { case 'dota': return new dota(); break; case 'lol': return new lol(); break; case 'honnr': return new honor(); } } } $sf = Factories::create('dota'); echo $sf->play();