当前位置:首页 > 网站运营杂谈 > 正文

怎样理解php工厂模式?看完这篇你就懂了!

怎样理解php工厂模式?看完这篇你就懂了!

咱来聊聊用 PHP 实现工厂模式这事儿。一开始我也没咋在意这个什么工厂模式,就觉得直接 new 一个对象不就完事儿吗?项目做大,代码多,发现直接 new 出来的对象,改...

咱来聊聊用 PHP 实现工厂模式这事儿。一开始我也没咋在意这个什么工厂模式,就觉得直接 new 一个对象不就完事儿吗?项目做大,代码多,发现直接 new 出来的对象,改起来是真的麻烦!

记得有一次,我要改一个数据库操作的类,结果,项目里好几十个地方都直接 new 这个类,我得一个个地方去改,真是改到吐血!那时候我就想,要是有一种方法,能让我只改一个地方,就能把所有用到这个类的地方都改,那该多

然后我就开始在网上各种找资料,看看有没有什么好的解决办法。找着找着,就看到“工厂模式”这个词。说是可以用来代替 new 操作,我当时还想这玩意听起来还挺高级,工厂都有,我这当码农的还摇身一变成厂长?

仔细看看说明,发现原来是用一个专门的类,这个类里面有一个静态方法,专门用来创建对象。就是你想用啥对象,就告诉这个方法,它就给你“生产”出来。这么一看,我这个“厂长”有点虚,原来就是个生产车间主任!

这下子有点感觉,我开始动手试试看。

怎样理解php工厂模式?看完这篇你就懂了!
  • 1/strong>,我建一个新的 PHP 文件,叫 。

  • 然后,在这个文件里写一个类,就叫 Factory ,简单明。

  • 接下来,在这个 Factory 类里面,写一个静态方法,名字就叫 create 。这个方法接收一个参数,用来表示要创建哪个类的对象。

create 方法里面,我用一个 switch 语句,根据传入的参数,来决定创建哪个类的对象,把创建好的对象返回出去。为测试,我先随便写两个类,UserProduct,就先拿这两个类来试试水。

代码大概是这样的:

<?phpclass User {public function __construct() {echo "创建一个 User 对象\n";class Product {public function __construct() {echo "创建一个 Product 对象\n";class Factory {public static function create($className) {switch ($className) {case 'User':return new User();case 'Product':return new Product();default:return null;// 使用工厂类创建对象$user = Factory::create('User');$product = Factory::create('Product');?>

写好之后,我运行一下,还真行!控制台输出 “创建一个 User 对象” 和 “创建一个 Product 对象”,说明我的工厂类已经开始工作!

这样一来,以后我要创建 User 或者 Product 对象,就不用直接 new ,直接调用 Factory::create('User') 或者 Factory::create('Product') 就行。最重要的是,如果以后我要修改 User 或者 Product 类,只需要改这两个类本身,还有 Factory 类里面创建对象的地方就行,其他地方都不用动!这可真是太方便!

虽然我现在这个工厂类还很简单,只能创建固定的几个类的对象,但是我已经体会到它的好处。以后再遇到需要创建很多对象的情况,我就知道可以用工厂模式来解决!这波操作,感觉自己又进步一点点,哈哈!今天就分享到这儿,也算是给自己做个记录!

最新文章