设计模式之工厂模式和工厂方法

下面为工厂模式php

<?php

/*
*优势:为系统结构提供灵活的动态扩展机制,便于维护。
*/

interface Skill
{
	function Lumbering();
	function buy();
}

class Person implements Skill
{
	function Lumbering()
	{
		echo "我在辛苦伐木<br />";
	}
	function buy()
	{
		echo "我在用人民币买房子<br />";
	}
}

class Spirit implements Skill
{
	function Lumbering()
	{
		echo "精灵在辛苦伐木<br />";
	}
	function buy()
	{
		echo "精灵在用精灵币买房子<br />";
	}
}

class Factory
{//这个类就至关于一个工厂,全部实例化经过这里进行,便于维护
	static function createHero($type)
	{
		switch ($type) {
			case 'person':
				return new Person();
				break;
			case 'spirit':
				return new Spirit();
				break;
			default:
				# code...
				break;
		}
	}
}

$person = Factory::createHero('person');
$spirit = Factory::createHero('spirit');

下面为工厂方法code

<?php

interface Tel
{
	function call();
	function receive();
}

class XiaoMi implements Tel
{
	function call(){
		echo "我在用小米打电话";
	}
	function receive(){
		echo "我在用小米接电话";
	}
}
class HuaWei implements Tel
{
	function call(){
		echo "我在用华为打电话";
	}
	function receive(){
		echo "我在用华为接电话";
	}
}

//仅负责规定接口,具体实现给实现类
interface Factory
{
	static function createPhone();
}

class XiaoFactory implements Factory()
{
	static function createPhone()
	{
		return new XiaoMi();
	}
}
class HuaFactory implements Factory()
{
	static function createPhone()
	{
		return new HuaWei();
	}
}

 

经过上面两组代码能够发现,工厂模式和工厂方法实际上是一个套路。都是写个接口进行约束。方法就是工厂模式进行了进一步细分,带了多了一些,可是更便于管理。接口

相关文章
相关标签/搜索