重要的是我们不需要引入所有相关类,我们只需要引入一个工厂类 即可
interface Car { public function makeCircle(); public function makeBody(); public function makeEngine(); public function makeDecoration(); } class Audi { public function makeCircle() { echo 'make Audi Circle'; } public function makeBody() { echo 'make Audi Body'; } public function makeEngine() { echo 'make Audi Engine'; } public function makeDecoration() { echo 'make Audi Decoration'; } public function makeAuto() { } } class Ford { public function makeCircle() { echo 'make Audi Circle'; } public function makeBody() { echo 'make Audi Body'; } public function makeEngine() { echo 'make Audi Engine'; } public function makeDecoration() { echo 'make Audi Decoration'; } public function makeHandle() { } } class BMW { public function makeCircle() { echo 'make BMW Circle'; } public function makeBody() { echo 'make BMW Body'; } public function makeEngine() { echo 'make BMW Engine'; } public function makeDecoration() { echo 'make BMW Decoration'; } public function makeAll() { } } class CarFactory { static public function create($class,$params) { if(!class_exists($class)){ throw new Exception("class not existis!"); } return new $class($params); } } $audi = CarFactory::create('Audi',’15w‘); $audi->makeCircle(); $bmw = CarFactory::create('BMW',’100w‘); $bmw->makeAll();