第二章:造化功 - 工厂模式
武林秘籍
在编程江湖中,有一门绝世武功名为"造化功",能够凭空创造万物,化腐朽为神奇。
而在设计模式中,有一门与之对应的绝学——工厂模式。
何为工厂?
工厂模式,就是通过一个工厂类来创建对象,将对象的创建与使用分离。
就像武林中的炼器大师,专门负责打造各种神兵利器。
武功心法
<?php
/**
* 造化功 - 工厂模式
* 炼器大师,打造神兵利器
*/
// 武器接口
interface Weapon {
public function attack();
public function getName();
}
// 剑
class Sword implements Weapon {
private $name = "倚天剑";
public function attack() {
return "剑气纵横,无坚不摧!";
}
public function getName() {
return $this->name;
}
}
// 刀
class Knife implements Weapon {
private $name = "屠龙刀";
public function attack() {
return "刀光如电,霸气十足!";
}
public function getName() {
return $this->name;
}
}
// 枪
class Spear implements Weapon {
private $name = "亮银枪";
public function attack() {
return "枪出如龙,直取要害!";
}
public function getName() {
return $this->name;
}
}
// 武器工厂接口
interface WeaponFactory {
public function createWeapon();
}
// 剑工厂
class SwordFactory implements WeaponFactory {
public function createWeapon() {
return new Sword();
}
}
// 刀工厂
class KnifeFactory implements WeaponFactory {
public function createWeapon() {
return new Knife();
}
}
// 枪工厂
class SpearFactory implements WeaponFactory {
public function createWeapon() {
return new Spear();
}
}
// 使用示例
echo "=== 造化功 - 工厂模式示例 ===\n";
// 创建剑工厂
$swordFactory = new SwordFactory();
$sword = $swordFactory->createWeapon();
echo "武器:{$sword->getName()}\n";
echo "攻击:{$sword->attack()}\n";
// 创建刀工厂
$knifeFactory = new KnifeFactory();
$knife = $knifeFactory->createWeapon();
echo "武器:{$knife->getName()}\n";
echo "攻击:{$knife->attack()}\n";
// 创建枪工厂
$spearFactory = new SpearFactory();
$spear = $spearFactory->createWeapon();
echo "武器:{$spear->getName()}\n";
echo "攻击:{$spear->attack()}\n";
?>
江湖应用
- 数据库连接 - 不同数据库对应不同工厂
- 支付方式 - 支付宝、微信支付等不同工厂
- 日志记录 - 文件日志、数据库日志等不同工厂
造化功要诀
- 化腐朽为神奇:将复杂的创建过程封装起来
- 各司其职:创建与使用分离,职责清晰
- 随心所欲:轻松切换不同类型的对象
修炼要点
- 工厂接口:定义统一的创建接口
- 具体工厂:实现接口,创建具体对象
- 客户端调用:通过工厂获取对象,无需关心创建细节
下回预告:第三章:千里眼顺风耳 - 观察者模式
本文章由设计模式武侠传系列发布