简单工厂模式
工厂模式,就是负责生成其他对象的类或方法。
1 类实现
比如,我们有一些类,它们都继承自交通工具类:
interface Vehicle { public function drive(); } class Car implements Vehicle { public function drive() { echo '汽车靠四个轮子滚动行走。'; } } class Ship implements Vehicle { public function drive() { echo '轮船靠螺旋桨划水前进。'; } } class Aircraft implements Vehicle { public function drive() { echo '飞机靠螺旋桨和机翼的升力飞行。'; } }
再创建一个工厂类,专门用作类的创建,:
class VehicleFactory { public static function build($className = null) { $className = ucfirst($className); if ($className && class_exists($className)) { return new $className(); } return null; } }
工厂类用了一个静态方法来创建其他类,在客户端中就可以这样使用:
VehicleFactory::build('Car')->drive(); VehicleFactory::build('Ship')->drive(); VehicleFactory::build('Aircraft')->drive();
省去了每次都要new
类的工作。
2 解决
参考资料:
还能不能在给出点具体的使用场景和例子呢
感觉使用new去实现类,不更简单?何必多此一举?
如果你多处地方都用了new,那有一天命名需要改动的时候是不是得搜索每一行代码去改,而工厂避免了这种情况
这是简单工厂!!