<?php
/*
 * WEB开发笔记 www.chhua.com 每日练习 PHP设计模式构建类和对象方法(装饰模式)
 *组合模式是聚合组件,而装饰模式主要是用来改变组件的功能,“装饰”,“装饰”,主要是装饰对象。
 *
 */

/*看代码演示
 * 假设:有一批部队开拓疆域,如果开拓到平原,然后在上面处理资源的开发获利和污染损失,并且部队自身能有计算财富总合的功能。
 *
 * */

abstract class title {//基类
 abstract function getCaifu();
}

class plains extends title {
 private $ziyuan=2;
 function getCaifu(){
  return $this->ziyuan;
 }
}

abstract class titlDecorator extends title {//装饰类,由于没有实现父类的getCaifu(),所以用抽象类
    protected $title;//为了让子类能访问用的protected
    function __construct(title $title){
     $this->title=$title;
    } 
}

class addCaifu extends titlDecorator{
 function getCaifu(){
  return $this->title->getCaifu()+2;//开发合理财富增加
 }
}

class jianCaifu extends titlDecorator{
 function getCaifu(){
  return $this->title->getCaifu()-4;//资源污染财富减少
 }
}

$title=new plains();//本身的财富值
echo $title->getCaifu();//输出 2

$title=new addCaifu(new plains());//开发合理
echo $title->getCaifu();//输出 4

$title=new jianCaifu(new addCaifu(new plains()));//资源污染之后
echo $title->getCaifu();//输出 0
?>

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: PHP设计模式构建类和对象方法(装饰模式) http://www.chhua.com/web-note893

相关笔记

更多