-
- /**
- 工厂模式的例子
- @link http://bbs.it-home.org
- */
- abstract class Operation{
- abstract public function getValue($num1,$num2);
- public function getAttr(){
- return 1;
- }
- }
- class Add extends Operation{
- public function getValue($num1, $num2){
- return $num1+$num2;
- }
- }
- class Sub extends Operation{
- public function getValue($num1, $num2){
- return $num1-$num2;
- }
- }
- class Factory{
- public static function CreateObj($operation){
- switch ($operation){
- case '+': return new Add();
- case '-': return new Sub();
- }
- }
- }
- $Op=Factory::CreateObj('-');
- echo $Op->getValue(3, 6);
- ?>
-
复制代码
在实际的开发中,一般用作数据库选择类。
再来看php设计模式之单例模式:单例即唯一存在。简单的说,一个对象只负责一个特定的任务;
比如邮局里的电话簿只有一本,有需要的人拿来看,没有必要每个人要查的时候工作人员就拿一本出来,看完了再回收。
-
- class Mysql{
- public static $conn;
- public static function getInstance(){
- if (!self::$conn){
- new self();
- return self::$conn;
- }else {
- return self::$conn;
- }
- }
- private function __construct(){
- self::$conn= "mysql_connect:";// mysql_connect('','','')
- }
- public function __clone()
- {
- trigger_error("Only one connection");
- }
- }
- echo Mysql::getInstance();
- echo Mysql::getInstance();
- ?>
-
复制代码
说明:
单例模式多用作数据库连接类,并经常与工厂模式一起使用,根据参数调用单例模式,可以提高资源使用效率。
|