说明
1、工厂模式解决的是如何不通过new建立实例对象。
2、有一些方法可以创建目标,而不是new。
如果想改变创建的对象类型,只需要改变工厂,使用这个工厂的所有代码会自动改变。
3、通常与接口一起使用,应用程序不需要知道这些实例化类的具体细节。
只要知道工厂返回的是支持某个接口类别的类就可以轻松使用。
实例
/** *抽象出一个人的接口 *InterfacePerson */ interfacePerson { publicfunctionshowInfo(); } /** *一个继承于抽象人接口的学生类 *ClassStudent */ classStudentimplementsPerson { publicfunctionshowInfo() { echo"这是一个学生\n"; } } /** *一个继承于抽象人接口的老师类 *ClassTeacher */ classTeacherimplementsPerson { publicfunctionshowInfo() { echo"这是一个老师\n"; } } /** *人类工厂 *ClassPersonFactory */ classPersonFactory { publicstaticfunctionfactory($person_type) { //将传入的类型首字母大写 $class_name=ucfirst($person_type); if(class_exists($class_name)){ returnnew$class_name; }else{ thrownewException("类:$class_name不存在",1); } } } //需要一个学生 $student=PersonFactory::factory('student'); echo$student->showInfo(); //需要一个老师的时候 $teacher=PersonFactory::factory('teacher'); echo$teacher->showInfo();
以上就是php工厂模式的介绍,希望对大家有所帮助。更多php学习指路:php教程