admin管理员组文章数量:1037775
每天认识一种设计模式之简单工厂模式
简单工厂模式定义:
通过一个工厂类根据输入参数决定创建哪种具体产品对象。
适用场景:
- 场景特点:创建逻辑简单,产品类型有限,且不频繁扩展。
- 典型应用:支付方式选择、文件格式解析器、数据库驱动切换。
示例:支付方式选择
代码语言:php复制// 支付接口
interface Payment {
public function pay($amount);
}
// 具体支付类
class Alipay implements Payment {
public function pay($amount) {
echo "支付宝支付:{$amount}元\n";
}
}
class WechatPay implements Payment {
public function pay($amount) {
echo "微信支付:{$amount}元\n";
}
}
// 简单工厂
class PaymentFactory {
public static function createPayment($type) {
switch ($type) {
case 'alipay':
return new Alipay();
case 'wechat':
return new WechatPay();
default:
throw new Exception("不支持的支付方式");
}
}
}
// 使用
$payment = PaymentFactory::createPayment('alipay');
$payment->pay(100); // 输出:支付宝支付:100元
痛点解决:
- 集中管理支付类的创建,避免在业务代码中频繁使用
new Alipay()
或new WechatPay()
。 - 缺点:新增支付方式需修改工厂类,违反开闭原则(适合小型项目或固定场景)
每天认识一种设计模式之简单工厂模式
简单工厂模式定义:
通过一个工厂类根据输入参数决定创建哪种具体产品对象。
适用场景:
- 场景特点:创建逻辑简单,产品类型有限,且不频繁扩展。
- 典型应用:支付方式选择、文件格式解析器、数据库驱动切换。
示例:支付方式选择
代码语言:php复制// 支付接口
interface Payment {
public function pay($amount);
}
// 具体支付类
class Alipay implements Payment {
public function pay($amount) {
echo "支付宝支付:{$amount}元\n";
}
}
class WechatPay implements Payment {
public function pay($amount) {
echo "微信支付:{$amount}元\n";
}
}
// 简单工厂
class PaymentFactory {
public static function createPayment($type) {
switch ($type) {
case 'alipay':
return new Alipay();
case 'wechat':
return new WechatPay();
default:
throw new Exception("不支持的支付方式");
}
}
}
// 使用
$payment = PaymentFactory::createPayment('alipay');
$payment->pay(100); // 输出:支付宝支付:100元
痛点解决:
- 集中管理支付类的创建,避免在业务代码中频繁使用
new Alipay()
或new WechatPay()
。 - 缺点:新增支付方式需修改工厂类,违反开闭原则(适合小型项目或固定场景)
本文标签: 每天认识一种设计模式之简单工厂模式
版权声明:本文标题:每天认识一种设计模式之简单工厂模式 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748318969a2284880.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论