工厂模式是另一种非常常用的模式, 正如其名字所示: 确实是对象实例的生产工厂. 某些意义上, 工厂模式提供了通用的方法有助于我们去获取对象, 而不需要关心其具体的内在的实现.
- <?php
- /**
- * Factory class[工厂模式]
- * @author ITYangs<ityangs@163.com>
- */
- interface SystemFactory
- {
- public function createSystem($type);
- }
- class MySystemFactory implements SystemFactory
- {
- // 实现工厂方法
- public function createSystem($type)
- {
- switch ($type) {
- case 'Mac':
- return new MacSystem();
- case 'Win':
- return new WinSystem();
- case 'Linux':
- return new LinuxSystem();
- }
- }
- }
- class System{ /* ... */}
- class WinSystem extends System{ /* ... */}
- class MacSystem extends System{ /* ... */}
- class LinuxSystem extends System{ /* ... */}
- // 创建我的系统工厂
- $System_obj = new MySystemFactory();
- // 用我的系统工厂分别创建不同系统对象
- var_dump($System_obj->createSystem('Mac'));// 输出: object(MacSystem)#2 (0) { }
- var_dump($System_obj->createSystem('Win'));// 输出: object(WinSystem)#2 (0) { }
- var_dump($System_obj->createSystem('Linux'));// 输出: object(LinuxSystem)#2 (0) { }
来源: http://www.bubuko.com/infodetail-2659526.html