工厂模式
接口中定义一些方法
实现接口的类实现这些方法
工厂类:用以实例化对象
优点:为系统结构提供了灵活的动态扩展机制。方便维护
interface Skill
{
function family();
function buy();
}
class Person implements Skill
{
function family()
{
echo '人族在辛辛苦苦的伐木<br>';
}
function buy()
{
echo '人族在使用人民币买房子<br>';
}
}
class JingLing implements Skill
{
function family()
{
echo '精灵族在辛辛苦苦的伐木<br>';
}
function buy()
{
echo '精灵族在使用精灵币<br>';
}
}
class Factiory
{
static function createHero($type)
{
switch($type){
case 'person':
return new Person();
break;
case 'jingling':
return new JingLing();
break;
}
}
}
//使用工厂创建对象
$person = Factory::createHero('person');
$person = Factory::createHero('jingling');
工厂方法模式
工厂方法模式核心是工厂类不再负责所有对象的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,它仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节
interface Tell
{
function call();
function receive();
}
class XiaoMi implements Tell
{
function call()
{
echo '我在使用小米手机打电话';
}
function receive()
{
echo '我在使用小米手机接电话';
}
}
class HuaWei implements Tell
{
function call()
{
echo '我在使用华为手机打电话';
}
function receive()
{
echo '我在使用华为手机接电话';
}
}
interface Factory
{
static function createPhone();
}
class XiaoFactory implements Factory
{
static function createPhone()
{
return new XiaoMi();
}
}
class HuaWeiFactory implements Factory
{
static function createPhone()
{
return new HuaWei();
}
}
//使用子类进行实例化