php面向对象设计,php面向对象设计模式

//单例模式(singleton) class Prefences{   private $props=array();   private  static $instance;   public function __construct(){}   public static function getinstance(){      if(empty(self::$instance))        self::$instance=new Prefences();      return     self::$instance;   }   public function setProperty($key,$val){     $this->props[$key]=$val;   }   public function getProperty($key){     return $this->props[$key];   } } $pref=Prefences::getinstance(); $pref->setProperty('name','mat'); unset($pref);//移除引用 $pref2=Prefences::getinstance(); echo $pref2->getProperty('name'); //工厂模式(factory method) class CommsManager{   const BLOGGS=1;   const MEGA=2;   private $mode;   function __construct($mode){      $this->mode=$mode;   }   function getHeaderText(){     switch($this->mode){        case self::BLOGGS :          return "BLOGGS";        default:          return "MEGA";             }   }   function getAPPTEncoder(){     switch($this->mode){        case self::BLOGGS :          return new BLOGGSEncoder();        default:          return new MEGAEncoder();            }   } } //抽象工厂(abstract factory) abstract class CommManager{    const APPT =1;    const TTD =2;    const CONTACT=3;    abstract function getHeaderText();    abstract function make($flag_int);    abstract function getFooterText(); }     class BloggsCommsManager extends CommsManager{      function getHeaderText(){        return "BloggsCal header\n";      }      function make($flag_int){        switch($flag_int){         case self::APPT:            return new BloggsApptEncoder();         case self::CONTACT:             return new BloggsContactEncoder();         case self::TTD:             return new BloggsTtdEncoder();                }      }      function getFooterText(){         return "BloggsCal footer\n";      }     } //prototype(原型模式) class Sea{} class EarthSea extends Sea{} class MarsSea extends Sea{} class Plain{} class EarthPlains extends Plain{} class MarsPlains extends Plain{} class Forest{} class EarthForest extends Forest{} class MarsForest  extends Forest{} class TerrainFactory{   private $sea;   private $forest;   private $plains;   function __construct(Sea $sea,Plain $plains,Forest $forest){      $this->sea=$sea;      $this->plains=$plains;      $this->forest=$forest;   }   function getSea(){      return clone $this->sea;       }   function getPlains(){      return clone $this->plains;       }     function getForest(){       return  clone $this->forest;   } } $factory=new TerrainFactory( new EarthSea(),new EarthPlains(),new EarthForest() ); print_r($factory->getSea()); print_r($factory->getPlains()); print_r($factory->getForest());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值