php 工厂静态类,PHP设计模式——静态工厂

介绍

静态工厂模式又叫做简单工厂模式,工厂模式是最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式,其核心用法就是根据不同的参数获得不同类的方法就是其设计思想.

优缺点

优点一个调用者想创建一个对象,只要知道其名称就可以.

扩展性高,新增加一个产品,只要扩展一个工厂类就可以.

屏蔽产品的具体实现,调用者只关心产品的接口.

修改类名,只需修改工厂模式里的类名即可.

缺点

工厂模式缺点是违反了高内聚原则,将全部逻辑都集中在一个工厂类中.当需要添加新的类,就要改变工厂类,增加了系统的复杂度,对于维护不利,同时也增加了系统具体类的依赖.

演示

创建接口// 定义英灵从者接口

interface Servant

{

// 防御

function Defense($servant);

// 攻击

function Attack($servant);

// 撤退

function Retreat($servant);

}

创建接口实现类// 定义saber类 实现英灵接口

class Saber implements Servant

{

public function __construct()

{

echo 'Servant ' . __CLASS__ . ' 遵从召唤而来' . PHP_EOL;

}

public function Defense($servant)

{

echo 'Servant ' . $servant . '进入防御状态' . PHP_EOL;

}

public function Attack($servant)

{

echo 'Servant ' . $servant . '使用剑发起攻击' . PHP_EOL;

}

function Retreat($servant)

{

echo 'Servant ' . $servant . '开始撤退' . PHP_EOL;

}

}

// 定义Archer类 实现英灵接口

class Archer implements Servant

{

public function __construct()

{

echo 'Servant ' . __CLASS__ . ' 遵从召唤而来' . PHP_EOL;

}

public function Defense($servant)

{

echo 'Servant ' . $servant . '进入防御状态' . PHP_EOL;

}

public function Attack($servant)

{

echo 'Servant ' . $servant . '使用弓箭发起攻击' . PHP_EOL;

}

function Retreat($servant)

{

echo 'Servant ' . $servant . '开始撤退' . PHP_EOL;

}

}

// 定义Fail类 实现英灵接口

class Fail implements Servant

{

public function __construct()

{

echo 'Servant 召唤失败' . PHP_EOL;

}

public function Defense($servant)

{

echo '未召唤成功' . PHP_EOL;

}

public function Attack($servant)

{

echo '未召唤成功' . PHP_EOL;

}

function Retreat($servant)

{

echo '未召唤成功' . PHP_EOL;

}

}

创建工厂// 创建工厂

class Factory

{

static public function factor($type)

{

// 首字母大写

$type = ucfirst($type);

// 判断类是否存在

if(class_exists($type)){

return new $type;

}

return new Fail();

}

}

演示// 调用测试

Factory::factor('saber')->Attack('兰斯洛特');

Factory::factor('Lancer')->Attack('斯卡哈');

// 执行输出

Servant Saber 遵从召唤而来

Servant 兰斯洛特使用剑发起攻击

Servant 召唤失败

未召唤成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值