首页 > php教程 > PHP开发 > 正文

星际争霸之php简单工厂模式

php中文网
发布: 2016-06-07 17:23:08
原创
2043人浏览过

上次用星际争霸讨论了面向对象的基础知识,似乎面向对象能解决很多问题。

但是还会有很多问题,简单的靠类和对象解决不得太好。

比如如何根据玩家输入的内容(尽管可以转化为其他字符串),来确定要制造的兵种,玩家不会输入代码:new Marine()。

和星际一样,PHP也没有终极兵种,如果类和接口是兵种的话,那么设计模式就是你的战术和控制,它可以让你靠各种兵种的搭配获胜。

待解决的问题:在人族的兵营,我们靠相应玩家的输入来动态确定要造的兵种,假设是机枪兵和火焰兵。

立即学习PHP免费学习笔记(深入)”;

思路:动态的根据传递的数据,新建相应的类的对象。

阶跃星辰开放平台
阶跃星辰开放平台

阶跃星辰旗下开放平台,提供文本大模型、多模态大模型、繁星计划

阶跃星辰开放平台 0
查看详情 阶跃星辰开放平台

简单工厂模式示例:

我们把机枪兵类的代码放入一个文件,Marine.php,它的代码如下:

<?php

class Marine {

    //机枪兵攻击的方法

  public function attack()

  {

    echo 'Marine attack';

  }

}

?>
登录后复制

我们把火焰兵类的代码放入一个文件,Firebat.php,它的代码如下:

<?php

class Firebat {

    //火焰兵攻击的方法

  public function attack()

  {

    echo 'Firebat attack';

  }

}

?>
登录后复制

主文件中的内容如下:

<?php

//兵种制造器的类

class BarracksCreator {

    //制造兵种的方法

  public create($createWhat)

  {

   //根据输入的参数,动态的把需要的类的定义文件载入

    require_once($createWhat.'.php');

   //根据输入的参数,动态的返回需要的类的对象

    return new $createWhat;

  }

}

//新建一个兵种制造器对象

$creator = new BarracksCreator();

//靠接收参数制造一个火焰兵对象

$troop1 = $creator->create('Marine');

$troop1->attack();

//靠接收参数制造一个机枪兵对象

$troop2 = $creator->create('Firebat');

$troop2->attack();

?>
登录后复制

用途总结:简单工厂模式可以将新建对象的任务进行封装,一旦需要增加新的返回类,只要修改负责新建对象的那部分代码。

实现总结:需要一个自动根据参数返回新建对象的工厂,比如上面兵种制造器BarracksCreator,使用的时候只需要将参数传递给他的生产方法create(),无需考虑具体的生产细节。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号