工厂方法模式
描述:在子类中实现父类的抽象方法
不需要修改工厂类,只需要添加就行。符合开闭原则
// 商品接口的实现类
interface Product2
{
function show(): void;
}
class ConcreateProductA implements Product2
{
public function show(): void
{
echo '我是商品A', PHP_EOL;
}
}
class ConcreateProductB implements Product2
{
public function show(): void
{
echo '我是商品B', PHP_EOL;
}
}
// 工厂的抽象类与创建类
abstract class Creator
{
// 抽象工厂方法
abstract protected function FactoryMethod(): Product2;
// 操作方法
public function AnOperation(): Product2
{
return $this->FactoryMethod();
}
}
class ConcreateCreatorA extends Creator
{
// 实现操作方法
protected function FactoryMethod(): Product2
{
return new ConcreateProductA();
}
}
class ConcreateCreatorB extends Creator
{
protected function FactoryMethod(): Product2
{
return new ConcreateProductB();
}
}
// 测试
$factoryA = new ConcreateCreatorA();
$factoryB = new ConcreateCreatorB();
$factoryA->AnOperation()->show();
$factoryB->AnOperation()->show();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!