<?php
// 表示鼠标,所有鼠标都应该实现此接口
interface IMouse
{
// 获取厂商的名称
public function GetFirmName();
}
// 表示键盘,所有键盘都应该实现此接口
interface IKeyboard
{
public function GetFirmName();
}
// 抽象出工厂的接口
interface IFactory
{
// 返回的类型必须实现 IMouse 接口
public function GetMouse() : IMouse;
// 返回的类型必须实现 IKeyboard 接口
public function GetKeyboard() : IKeyboard;
}
// 惠普品牌的鼠标
class HPMouse implements IMouse
{
// 获取鼠标厂商的名字(也就是惠普)
public function GetFirmName()
{
echo "惠普\n";
}
}
// 微软品牌的鼠标
class MicroMouse implements IMouse
{
//获取鼠标厂商的名字(也就是微软)
public function GetFirmName()
{
echo "微软\n";
}
}
// A品牌的鼠标
class AMouse implements IMouse
{
// 获取鼠标厂商的名字(也就是A)
public function GetFirmName()
{
echo "A\n";
}
}
// 惠普品牌的键盘
class HPKeyboard implements IKeyboard
{
// 获取厂商的名字(也就是惠普)
public function GetFirmName()
{
echo "惠普\n";
}
}
/********** Begin **********/
// 微软品牌的键盘
class MicroKeyboard implements IKeyboard
{
public function GetFirmName()
{
echo "微软\n";
}
}
/********** End **********/
/********** Begin **********/
//A品牌的键盘
class AKeyboard implements IKeyboard
{
public function GetFirmName()
{
echo "A\n";
}
}
/********** End **********/
class HPFactory implements IFactory
{
// 返回的类型必须实现IMouse接口
public function GetMouse(): IMouse
{
return new HPMouse();
}
// 返回的类型必须实现 IKeyboard 接口
public function GetKeyboard(): IKeyboard
{
return new HPKeyboard();
}
}
// 必须继承自 IFactory
class MicroFactory implements IFactory
{
// 返回的类型必须实现IMouse接口
public function GetMouse(): IMouse
{
return new MicroMouse();
}
/********** Begin **********/
//实现获取键盘的逻辑
public function GetKeyboard(): IKeyboard
{
return new MicroKeyboard();
}
/********** End **********/
}
// 必须继承自 IFactory
class AFactory implements IFactory
{
// 返回的类型必须实现IMouse接口
public function GetMouse(): IMouse
{
return new AMouse();
}
/********** Begin **********/
// 实现获取键盘的逻辑
public function GetKeyboard(): IKeyboard
{
return new AKeyboard();
}
/********** End **********/
}
PHP语言设计模式之工厂模式
最新推荐文章于 2023-06-16 18:07:48 发布