• 另一种 模板模式


    用途总结:模板模式可以将一系列的步骤自动化,同时又可以满足不同的细节变化。
    
    实现总结:需要一个抽象类来包含框架函数,让具体的子类继承它,并实现所有的步骤。使用的时候只要调用框架函数就自动完成了。

    比如:再来一个 “
    地刺”的演化,只需要写一个class diceEvolution extends evolution
    
    
    <?php
    
    //进化的框架类,它是个抽象类
    abstract class evolution
    {
        //!!!框架方法,由它来实施各个步骤,用final禁止子类覆盖
        final public function process($troop)
        {
            $egg = $this->becomeEgg($troop);//生成一个蛋,参数为进化的部队
            $this->waitEgg($egg); //等待蛋孵化,参数为蛋
            return $this->becomeNew($egg);//孵化后产生新部队
        }
        //下面三个抽象方法,由具体子类来实现
        abstract public function becomeEgg($troop);
        abstract public function waitEgg($egg);
        abstract public function becomeNew($egg);
    }
    
    //为了简单说明,这里用空中卫士(天蟹)的进化类来演示,地刺等的处理方法类似
    //天蟹的进化类继承抽象进化类
    
    class GuardianEvolution extends evolution
    {
        //实现生成一个蛋
        public function becomeEgg($troop)
        {
            echo "销毁飞龙,并生一个蛋!";//销毁飞龙,返回一个蛋的对象的代码
            return $troop."蛋";
        }
        //等待蛋孵化
        public function waitEgg($egg)
        {
            echo "等待孵化!".$egg;//等待几十秒钟的代码
        }
        //孵化后产生新部队
        public function becomeNew($egg)
        {
            echo $egg."销毁,返回一个天蟹!";//销毁蛋,返回一个天蟹
        }
    
    }
    $sds='天蝎';
    $e1 = new GuardianEvolution();//新建一个天蟹进化的对象
    $e1->process($sds);//!!!重点,让它调用父类的进化框架函数,自动完成三个步骤
    
    ?>
  • 相关阅读:
    Java集合HashMap的实现原理(借鉴)
    Heritrix在eclipse中的配置
    Hadoop中涉及到的网络 I/O 优化
    李开复的博士论文人生思考
    Java中HastSet用法
    统计语言模型
    ASP.NET 中的正则表达式
    高ASP.Net应用程序性能的十大方法
    在多线程环境下使用HttpWebRequest或者调用Web Service
    使用TextBoxWatermark为TextBox加上水印效果
  • 原文地址:https://www.cnblogs.com/jiufen/p/4992061.html
Copyright © 2020-2023  润新知