PHP设计模式(一)

1.单例模式  保证一个类只有一个实例。

<?php
header("Content-Type:text/html;charset=utf-8");
//单例模式
class danli {
    private $name;
    //私有化构造方法
    private function __construct(){

    }
    static public $instance;
    //静态方法 返回当前实例
    static public function getinstance(){
        if(!self::$instance){
            self::$instance = new self();
        }
        return self::$instance;
    }
    public function setname($n){
        $this->name = $n;
    }
    public function getname(){
        echo $this->name;
    }
}
$a = danli::getinstance();
$a->setname('lisan');
$a->setname('李三');
$a->getname();
//结果  打印 李三
$b = danli::getinstance();
$b->getname();
//结果 打印 李三

2.注册模式   解决全局共享和交换对象,创建好的对象,注册到全局可使用的数组之中;

<?php
class test {
    function say() {
        echo 'test.class say haha';
    }
}
class register{
    protected static $projects;
    function set($alias, $project){
        self::$projects[$alias] = $project;
    }
    static function get($alias){
        return self::$projects[$alias];
    }
    function _unset($alias){
        unset(self::$projects[$alias]);
    }
}
$bb = new register();
$bb->set('test',new test());
$cc = $bb::get('test');
$cc->say();
//打印 结果 test.class say haha

3.工厂模式  常用来替代多次使用new的情况

<?php
class action{
    function say();
}
class talk extends action{
    function say(){
        echo 'I can bbb~';
   }
}
class eat extends action{
    function say(){
        echo 'I can eat eat~';
    }
}
class factory{
    static function createTalk(){
       return new talk(); 
   }
   static function createEat(){
       return new eat();
   }
}

$eat = factory::createEat();
$talk = factory::createTalk();

$eat->say();
$talk->say();

//结果打印
// I can eat eat~   I can bbb~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值