面向对象的洗礼:设计模式(二十一)之单例模式
单例模式,顾名思义,单个的实例,就是对某个对象,只new一次。单例模式是设计模式常见的一种,用来创建封装好的类的唯一一个实例,这样一来,可以严格控制客户怎么样访问它以及何时访问它,对唯一实例的受控访问。
单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点。
单例模式如何防止一个类被多次new呢?首先,每个类都有一个构造函数,即使没有显式的声明,也是以public存在的,将构造函数设为private。其次,让该类保存实例化后的对象,并提供一个对外的接口。
示例场景:mysql中user表。以PHP为代码环境,来模拟设计模式中的单例模式。
<?php class UserMysqlModel{ public function get(){ echo '获取user表的数据<br>'; } public function set(){ echo '写入user表的数据<br>'; } public function edit(){ echo '修改user表的数据<br>'; } public function del(){ echo '删除user表的数据<br>'; } } class UserBusiness{ private static $userMysqlModelObj = ''; private function __construct(){ } public static function getInstance(){ if(empty(self::$userMysqlModelObj)){ self::$userMysqlModelObj = new UserMysqlModel(); } return self::$userMysqlModelObj; } } //客户端/接口 $userBusinessObj = UserBusiness::getInstance()->get(); $userBusinessObj = UserBusiness::getInstance()->set(); $userBusinessObj = UserBusiness::getInstance()->edit(); $userBusinessObj = UserBusiness::getInstance()->del();