Heim > Backend-Entwicklung > PHP-Tutorial > php常用设计模式之工厂模式与单例模式介绍

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

WBOY
Freigeben: 2016-07-25 09:05:19
Original
807 Leute haben es durchsucht
  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. ?>
复制代码

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



Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage