设计模式——工厂方法模式

说明

创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。

示例

下面看下工厂方法模式的代码实现

// 创建公共接口
interface Sender{
public function send();
}

// 创建两个实现类
class MailSender implements Sender{
public function send(){
print "mail send";
}
}

class SmsSender implements Sender{
public function send(){
print "sms send";
}
}

// 工厂类接口
interface Provider{
public function produce(): Sender;
}

// 实现工厂类
class SendMailFactory implements Provider{
public function produce(): Sender{
return new MailSender();
}
}

class SendSmsFactory implements Provider{
public function produce(): Sender{
return new SmsSender();
}
}

// test
$sender = (new SendMailFactory())->produce();
$sender->send();
// output: mail send

总结

优点:扩展性好。如果需要添加个企业微信推送,只需做一个实现类,实现Sender接口,同时做一个工厂类,实现Provider接口,就OK了。


文章作者: Crazy Boy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Crazy Boy !
赏

留言

想法、疑问或勘误,都可以写在这里。留言会公开显示。

正在准备留言区…

 上一篇
设计模式——外观模式 设计模式——外观模式
说明 外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启
2022-05-19
下一篇 
设计模式——桥接模式 设计模式——桥接模式
说明 桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本
2022-05-19