搜尋
首頁後端開發php教程在java跟php中,单例模式的区别

在java和php中,单例模式的区别

在java和php中都会用到很多的单例模式,那么它们有什么区别呢?昨天晚上我相互对比了一下,就做了个小小的总结,然后写了个很小的java单例和php单例


一、java 单例

//完成对用户登录的简单验证操作class User{	private String name=null;//用户名	private String passwd=null;//密码	private static User ins = new User("这里可以传入常量,如“chunge”,此时构造函数要有对应形参。但是不支持在静态初始化函数中对它进行外部传递赋值");//单例实例对象	//初始化用户名密码的代码块	{		this.name="chunge";		this.passwd="111111";	}		//私有构造函数	private User(String n){		this.name=n;	}	//获取单例对象	public static User getIns(){		return ins;	}		//判断用户信息是否正确	public  void checkUserInfo(String name , String passwd ){		if(name==this.name && passwd==this.passwd){			System.out.println("欢迎您" + this.name);			System.exit(1);		}				//用户密码不匹配		System.out.println("非法登录");		System.exit(1);			}};public class oop{	public static void main(String args[]){		User U = User.getIns();//实例化对象		U.checkUserInfo("chunge","111111");	}};


二、php单例


<?php /**网站全局配置类**/	class Config{		private static $ins="";		private $config_file="";//配置文件		public $WEB_CONFIG=array();		//关闭初始化函数		private function __construct(){			//引入全局配置文件			require_once ROOT."config/global_config.php";			$this->config_file=ROOT."config/global_config.php";			//赋值			$this->WEB_CONFIG=$WEB_CONFIG;		}				//禁用克隆函数		private function __clone(){			return false;		}		//单例模式		public static function getIns(){			if(!(self::$ins instanceof self)){				//如果不存在				self::$ins=new self();						}			return self::$ins;		}				////动态输出配置信息		public function configGet($key){			if(array_key_exists($key,$this->WEB_CONFIG)){				return $this->WEB_CONFIG[$key];			}else{				echo "该配置信息不存在";				}					}		//动态添加配置信息传入键即可				public function configSet($key,$value){			//真正存入			$str=file_get_contents($this->config_file);			//var_dump($str);			$tmp=$this->configGet($key); 			$str=str_replace($tmp,$value,$str);			file_put_contents($this->config_file,$str);			//file_put_contents("ROOT1.php",$str);					}		////动态输出配置信息		public function __get($key){			if(array_key_exists($key,$this->WEB_CONFIG)){				return $this->WEB_CONFIG[$key];			}else{				echo "该配置信息不存在";				}					}		//动态添加配置信息				public function __set($key,$value){			//只是暂时的配置,未真正存入			$this->WEB_CONFIG[$key]=$value;				}			}?>

总结:

/**	笔记:类名字User  单例变量ins  		在java和php中,单例模式的区别		1.类可以进行单例模式,和php一样		2.java的单例模式变量声明:				private/public static 类名字 对象名字 = new 类名字();				例如:private static User ins = new User();//已经进行了new操作		  php的单例模式变量声明:				public/private static 对象名字=null;//只是声明,未进行new操作				例如:public static $ins = null;		3.java获得该单例对象方法			    public static 类名字 方法名字(){					return 刚刚定义的对象名字				}				例如: 				public static User getIns(){					return ins;//注意这里无法用this.但在php中,可以用self::获取				}		  php中获取该单例对象方法				public function getIns(){					if(self::$ins==null || (!self::$ins instanceof self)){						self::$ins=new self();					}					return self::$ins;				}		 4.在java中,单例模式如果初始化类中某些变量,因为其getIns()方法是静态的,如果变量不为静态的,则无法实例化该变量。即使构造函数需要传参,个人觉得可以直接用代码块     进行初始值的设置		   在php中,单例模式可以对起进行初始值的赋值,如				public function getIns($can1,$can2.......){					if(self::$ins==null || (!self::$ins instanceof self)){						self::$ins=new self($can1,$can2........);//.......代表不限个数					}					return self::$ins;				}				这是只需要类的构造函数传入对应个数的参数即可。**/


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何修复 .NET 解析器返回的错误 0xC00CE556如何修复 .NET 解析器返回的错误 0xC00CE556Apr 25, 2023 am 08:34 AM

在安装应用程序的新版本时,Windows可能会显示此错误消息“解析C:\\Windows\Microsoft.Net\Framework\v2.0.50727\Config\machine.configParser返回错误0xC00CE556时出错”。当您的系统启动时,这个问题也会出现。无论您在何种情况下遇到此问题,.NETFramework都是幕后真正的罪魁祸首。您可以使用一些非常简单的修复程序来阻止此错误代码再次出现。修复1–替换损坏的文件您可以轻松地从原始目录中替换损坏的ma

为什么NameResolutionError(self.host, self, e) from e,怎么解决为什么NameResolutionError(self.host, self, e) from e,怎么解决Mar 01, 2024 pm 01:20 PM

报错的原因NameResolutionError(self.host,self,e)frome是由urllib3库中的异常类型,这个错误的原因是DNS解析失败,也就是说,试图解析的主机名或IP地址无法找到。这可能是由于输入的URL地址不正确,或者DNS服务器暂时不可用导致的。如何解决解决此错误的方法可能有以下几种:检查输入的URL地址是否正确,确保它是可访问的确保DNS服务器可用,您可以尝试在命令行中使用"ping"命令来测试DNS服务器是否可用尝试使用IP地址而不是主机名来访问网站如果是在代理

iOS的developer版和public版有什么区别?iOS的developer版和public版有什么区别?Mar 01, 2024 pm 12:55 PM

每年Apple发布新的iOS和macOS大版本之前,用户都可以提前几个月下载测试版抢先体验一番。由于公众和开发人员都使用该软件,所以苹果公司为两者推出了developer和public版即开发者测试版的公共测试版。iOS的developer版和public版有什么区别呢?从字面上的意思来说,developer版是开发者测试版,public版是公共测试版。developer版和public版面向的对象不同。developer版是苹果公司给开发者测试使用的,需要苹果开发者帐号才可以收到下载并升级,是

php如何使用ThinkPHP\Config进行配置管理?php如何使用ThinkPHP\Config进行配置管理?May 31, 2023 pm 02:31 PM

随着PHP语言的不断发展,做为PHP后端框架中广泛使用的ThinkPHP也在不断完善。随着业务场景的逐渐复杂,ThinkPHP中对于配置管理的需求也越来越大。在这种背景下,ThinkPHP提供了丰富的配置管理功能,今天我们就来介绍一下如何通过ThinkPHPConfig实现配置管理。一、ThinkPHPConfig的介绍ThinkPHPConfig是Thin

Python中的self怎么使用Python中的self怎么使用May 17, 2023 pm 10:40 PM

在介绍Python的self用法之前,先来介绍下Python中的类和实例我们知道,面向对象最重要的概念就是类(class)和实例(instance),类是抽象的模板,比如学生这个抽象的事物,可以用一个Student类来表示。而实例是根据类创建出来的一个个具体的“对象”,每一个对象都从类中继承有相同的方法,但各自的数据可能不同。1、以Student类为例,在Python中,定义类如下:classStudent(object):pass(Object)表示该类从哪个类继承下来的,Object类是所有

php如何使用CodeIgniter\Config进行配置管理?php如何使用CodeIgniter\Config进行配置管理?Jun 02, 2023 pm 06:01 PM

一、CodeIgniter简介CodeIgniter是一个轻量级且全面的PHP开发框架,旨在为Web开发人员提供快速且强大的工具来构建Web应用程序。它是一个开源的框架,使用MVC架构模式来实现快速开发和基础功能,同时支持多种数据库。二、Config库简介Config库是CodeIgniter框架中的一个组件,用于对代码进行配置管理。Config库包含了很多

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

一篇搞懂this指向,赶超70%的前端人一篇搞懂this指向,赶超70%的前端人Sep 06, 2022 pm 05:03 PM

同事因为this指向的问题卡住的bug,vue2的this指向问题,使用了箭头函数,导致拿不到对应的props。当我给他介绍的时候他竟然不知道,随后也刻意的看了一下前端交流群,至今最起码还有70%以上的前端程序员搞不明白,今天给大家分享一下this指向,如果啥都没学会,请给我一个大嘴巴子。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。