Heim >php教程 >php手册 >php使用接口实现工厂设计模式

php使用接口实现工厂设计模式

WBOY
WBOYOriginal
2016-06-06 19:53:23748Durchsuche

php实现工厂设计模式,使用接口实现,表面上接口没有什么用,因为php是类型自动转换的。实现上使用接口可以约束类的定义,从而实现一致的访问。 接口在php只能起到约束类的定义作用,虽不像c#/java那么直观,但基于oop的封装要求,使用接口可以提高程序的可

php实现工厂设计模式,使用接口实现,表面上接口没有什么用,因为php是类型自动转换的。实现上使用接口可以约束类的定义,从而实现一致的访问。

接口在php只能起到约束类的定义作用,虽不像c#/java那么直观,但基于oop的封装要求,使用接口可以提高程序的可扩展性,如实现代理设计模式。

<?php //人类接口
	interface IHuman
	{
	
		function GetName();
	
	}
	
	//男人类,实现人类接口
	class ManClass implements IHuman
	{
		//获取姓名方法 
		public function GetName()
		{
			return "I'm man."."<br>";
			
		}
			
	}
	
	//女人类,实现人类接口
	class WomanClass implements IHuman
	{
		//获取姓名方法 
		public function GetName()
		{
			return "I'm Woman."."<br>";
			
		}
			
	}
	
	//类工厂,根据需要生产不同实例对象返回
	class ManFactory
	{
		//根据参数获取实例对象
		public function GetIHuman($IHuman="man")
		{
			if($IHuman=="woman")
			{
				return new WomanClass();
			}
			else if($IHuman=="man")
			{
				return new ManClass();
			}
			else
			{
				return null;
			}
	
		}
		//直接获取woman类
		public function GetWoman()
		{
			return new WomanClass();
			//return new ManClass();
		}
		//直接获取man类
		public function  GetMan()
		{
	
			return new ManClass();
		}
	}

	$ManFactory=new ManFactory();
	
	$ManClass=$ManFactory->GetIHuman();
	
	echo $ManClass->GetName();
	
	$IHuman=$ManFactory->GetIHuman("woman");
	
	echo $IHuman->GetName();
	
	$Woman=$ManFactory->GetWoman();
	
	echo $Woman->GetName();
	
	$Man=$ManFactory->GetMan();
	
	echo $Man->GetName();

?>

运行结果:

I'm man.
I'm Woman.
I'm Woman.
I'm man.

Stellungnahme:
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