设计模式

35 阅读1分钟

单例模式*应用场景
一个应用中会存在大量的数据库操作,比如过数据库句柄来连接数据库这一行为,使用单例模式可以避免大量的new操作,因为每一次new操作都会消耗内存资源和系统资源。
如果系统中需要有一个类来全局控制某些配置信息,那么使用单例模式可以很方便的实现.

//私有属性,用于保存实例
    private static $instance;
//构造方法私有化,防止外部创建实例
    private function __construct(){}
//公有方法,用于获取实例
    public static function getInstance(){
        //判断实例有无创建,没有的话创建实例并返回,有的话直接返回
        if(!(self::$instance instanceof self)){
            self::$instance = new self();
        }
        return self::$instance;
    }
//克隆方法私有化,防止复制实例
    private function __clone(){}
1.  一个类只能有一个对象
1.  必须是自行创建这个类的对象
1.  要想整个系统提供这一个对象
1.  单例模式的类只提供私有的构造函数,
1.  类定义中含有一个该类的静态私有对象,
1.  该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。


工厂模式*应用场景

  1. Base.php – 基础短信服务接口类
interface Base
{
    public static function sendCode($phone, $code);
}
class BaseSms implements Base
{

    public static function sendCode($phone, $code){

        //发短信业务逻辑
        return '短信验证码发送成功';
    }
}
class BaseController {

    public function code (){

        if (BaseSms::sendCode($phone,$code)){

            return '';
        }
        return '';
    }
}