Home  >  Article  >  Backend Development  >  PHP-模板(template)形式

PHP-模板(template)形式

WBOY
WBOYOriginal
2016-06-13 13:04:22736browse

PHP-模板(template)模式
1.定义:定义一个操作的算法的框架,将一些步骤的实现推迟到子类.
其实意思就是操作的算法的骨架不变,即规定好了第一步应该干什么,第二步干什么,再次干什么,但是不规定具体内容.
2.图示
 PHP-模板(template)形式
AbstractClass(抽象类):定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。
ConcreteClass(具体类):实现父类中的抽象方法以完成算法中与特定子类相关的步骤


在此那超市购物为例子,如某A购物非常有规律,他一般先去书籍区转转,然后再去蔬菜瓜果区看看,再去服装鞋帽区逛逛,最后去家电数码区(这就相当与AbstractClass) 
话说上周六A去了一次超市
先到了书籍区,看到莫言的小说,感到应该随随大众,买了一本>,立刻感到成了文艺青年,和周围人不一样了;
后去了蔬菜瓜果区,看到了最喜欢的橘子。。。。。;
然后到了服装鞋帽区,试了试阿迪王的最新款,买了;
到了家电数码区,看中了某款手机手机,没有钱买。
(这就相当与ConcreteClass)


惯例上代码:
1.抽象类

abstract class AbstractClass{
    public function trip(){
        $this->bookTrip();
        $this->vegetablesTrip();
        $this->shoesTrip();
        $this->digitalTrip();
    }
    abstract protected function bookTrip();
    abstract protected function vegetablesTrip();
    abstract protected function shoesTrip();
    abstract protected function digitalTrip();
}

2.具体类
class ConcreteClass extends AbstractClass{
    protected function bookTrip(){
        echo "买>\n";
    }
    protected function vegetablesTrip(){
        echo "买10个橘子\n";
    }
    protected function shoesTrip(){
        echo "买阿迪王\n";
    }
    protected function digitalTrip(){
        echo "没钱没手机\n";
    }

}

3.client
$instance=new ConcreteClass();
$instance->trip();


最后模板模式的本质就是固定算法骨架
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn