加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP工厂模式能解决啥问题,怎样实现

发布时间:2023-05-18 13:48:40 所属栏目:PHP教程 来源:
导读:这篇文章给大家介绍了“PHP工厂模式能解决什么问题,怎样实现”的相关知识,讲解详细,步骤过程清晰,有一定的借鉴学习价值,因此分享给大家做个参考,感兴趣的朋友接下来一起跟随小编看看吧。

说明
这篇文章给大家介绍了“PHP工厂模式能解决什么问题,怎样实现”的相关知识,讲解详细,步骤过程清晰,有一定的借鉴学习价值,因此分享给大家做个参考,感兴趣的朋友接下来一起跟随小编看看吧。

说明
 
1、工厂模式解决的是如何不通过new建立实例对象。
 
2、有一些方法可以创建目标,而不是new。
 
如果想改变创建的对象类型,只需要改变工厂,使用这个工厂的所有代码会自动改变。
 
3、通常与接口一起使用,应用程序不需要知道这些实例化类的具体细节。
 
只要知道工厂返回的是支持某个接口类别的类就可以轻松使用。
 
实例
 
/**
 
 * 抽象出一个人的接口
 
 * Interface Person
 
 */
 
interface Person
 
{
 
    public function showInfo();
 
}

/**
 
 * 一个继承于抽象人接口的学生类
 
 * Class Student
 
 */
 
class Student implements Person
 
{
 
    public function showInfo()
 
    {
 
        echo "这是一个学生 \n";
 
    }
 
}

/**
 
 * 一个继承于抽象人接口的老师类
 
 * Class Teacher
 
 */
 
class Teacher implements Person
 
{
 
    public function showInfo()
 
    {
 
        echo "这是一个老师 \n";
 
    }
 
}
 
/**
 
 * 人类工厂
 
 * Class PersonFactory
 
 */
 
class PersonFactory
 
{
 
    public static function factory($person_type)
 
    {
 
        // 将传入的类型首字母大写
 
        $class_name = ucfirst($person_type);
 
 
 
        if(class_exists($class_name)){
 
            return new $class_name;
 
        }else{
 
            throw  new Exception("类:$class_name 不存在",1);
 
        }
 
    }
 
}

// 需要一个学生
 
$student = PersonFactory::factory('student');
 
echo $student->showInfo();
 
// 需要一个老师的时候
 
$teacher = PersonFactory::factory('teacher');
 
echo $teacher->showInfo();
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!