3种基本设计模式

1:工厂模式:使用工厂方法或者类去生成对象,而不是在代码中直接new,很多其它设计模式都依赖与工厂模式

<?php

class Factory{
    //工厂方法
    public static function CreateDb()
    {
        return new Databases();//实例化
    }
    public function getName()
    {
        return "Jack";
    }
}
$newModel = UserFactory::CreateDb();
echo( $newModel->getName()."\n" );

2:单例模式:使某个类的对象仅允许创建一次

<?php
class Database

{
    static private $db;

    //构造方法采用 私有控制private 可以避免在外部使用new来实例化这个对象
    private function __construct()
    {

    }

    //实例化自己
    static function getInstance()
    {
        if (empty(self::$db)) {
            self::$db = new self;
            return self::$db;
        } else {
            return self::$db;
        }
    }

}
$db = Database::getInstance();

3:注册树模式:全局共享和交换对象

<?php

class Register
{
    protected static $objects;

    static function set($alias, $object)
    {
        self::$objects[$alias] = $object;
    }

    static function get($key)
    {
        if (!isset(self::$objects[$key]))
        {
            return false;
        }
        return self::$objects[$key];
    }

    function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
}

Register::set('rand',RandFactory::factory());//扔到树上
$object=Register::get('rand');//从树上拿下来

标签: Patterns

添加新评论