zoukankan      html  css  js  c++  java
  • 工厂模式 接口 封装 实例

    <?php
    /*
    使用接口
    制造厂和实例化直接参数用数组封装,告诉工厂对谁,做什么,实例化的代码就不再做其他事情
    */
    //各种兵来一个接口
    interface bingge
    {
        public function make();//制造
        public function weixiu();//维修
    }
    
    //火焰兵
    class huoyan implements bingge
    {
        public function make()
        {
            echo "我是一个火焰兵";
        }
    
        public function weixiu()
        {
            echo "我在维修一个火焰兵";
        }
    }
    
    //机枪兵
    class jiqiang implements bingge
    {
        public function make()
        {
            echo "我是一个机枪兵";
        }
    
        public function weixiu()
        {
            echo "我在维修一个机枪兵";
        }
    }
    
    //如果第二期需要:坦克兵,就只用在这里添加
    class tanke implements bingge
    {
        public function make()
        {
            echo "我是一个坦克兵!";
        }
    
        public function weixiu()
        {
            echo "我在维修一个坦克兵!";
        }
    }
    
    //建造士兵的工具
    class makeshibing
    {
        public function zuosa($canshu)
        {
            $comeon = new $canshu["who"];
            $comeon->$canshu["what"]();
        }
    }
    
    //一个建造实例
    $begin = new makeshibing();
    $canshu = array
    (
        "who"  =>  "huoyan" ,
        "what"  =>  "make" ,
    );
    $how = $begin->zuosa($canshu);
    
    echo "<hr>";
    
    //第二期需要增加坦克兵种
    $begin = new makeshibing();
    $canshu = array
    (
        "who"  =>  "tanke" ,
        "what"  =>  "make" ,
    );
    $how = $begin->zuosa($canshu);
    
    echo "<hr>";
    
    //第三期需要
    $begin = new makeshibing();
    $canshu = array
    (
        "who"  =>  "tanke" ,
        "what"  =>  "weixiu" ,
    );
    $how = $begin->zuosa($canshu);
    ?>
  • 相关阅读:
    vue-router基础使用
    Vue插槽
    Vue组件通信
    小程序自定义头部导航栏
    css日常积累
    移动端的无缝轮播图片
    vue的h5开发中,将页面保存为图片
    vue-webpack打包问题
    洛谷P1341 最受欢迎的奶牛
    Tarjan 算法详解
  • 原文地址:https://www.cnblogs.com/jiufen/p/4990629.html
Copyright © 2011-2022 走看看