欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php常用设计模式之工厂模式与单例模式介绍

程序员文章站 2022-05-21 11:05:37
...
  1. /**
  2. 工厂模式的例子
  3. @link http://bbs.it-home.org
  4. */
  5. abstract class Operation{
  6. abstract public function getValue($num1,$num2);
  7. public function getAttr(){
  8. return 1;
  9. }
  10. }
  11. class Add extends Operation{
  12. public function getValue($num1, $num2){
  13. return $num1+$num2;
  14. }
  15. }
  16. class Sub extends Operation{
  17. public function getValue($num1, $num2){
  18. return $num1-$num2;
  19. }
  20. }
  21. class Factory{
  22. public static function CreateObj($operation){
  23. switch ($operation){
  24. case '+': return new Add();
  25. case '-': return new Sub();
  26. }
  27. }
  28. }
  29. $Op=Factory::CreateObj('-');
  30. echo $Op->getValue(3, 6);
  31. ?>
复制代码

在实际的开发中,一般用作数据库选择类。

再来看php设计模式之单例模式:单例即唯一存在。简单的说,一个对象只负责一个特定的任务; 比如邮局里的电话簿只有一本,有需要的人拿来看,没有必要每个人要查的时候工作人员就拿一本出来,看完了再回收。

  1. class Mysql{
  2. public static $conn;
  3. public static function getInstance(){
  4. if (!self::$conn){
  5. new self();
  6. return self::$conn;
  7. }else {
  8. return self::$conn;
  9. }
  10. }
  11. private function __construct(){
  12. self::$conn= "mysql_connect:";// mysql_connect('','','')
  13. }
  14. public function __clone()
  15. {
  16. trigger_error("Only one connection");
  17. }
  18. }
  19. echo Mysql::getInstance();
  20. echo Mysql::getInstance();
  21. ?>
复制代码

说明: 单例模式多用作数据库连接类,并经常与工厂模式一起使用,根据参数调用单例模式,可以提高资源使用效率。