我们在进行面向对象开发的,创建一个对象最常用的方式就是通过new操作符。但这种创建方式把对象的创建和使用耦合在一起,有时候当创建逻辑比较复杂,或者需要根据参数动态创建具体对象的时候,我们就考虑使用工厂模式,封装对象的创建过程,将对象的创建和使用分离。
一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。抽象工厂的使用场景比较特殊,并不常用,所以本文不再介绍。
接下来我们通过这样一个业务场景:当用户执行一个操作的时候,根据相应的类型给相关人发送消息通知,消息类型包括邮件,站内信,短信来介绍工厂模式。
一、简单工厂
interface MessagePushService {
void sendMessage(String message);
}
class MailMessagePushServiceImpl implements MessagePushService {
@Override
public void sendMessage(String message) {
System.out.println("邮件消息发送");
}
}
class ShortMessagePushServiceImpl implements MessagePushService {
@Override
public void sendMessage(String message) {
System.out.println("短信消息发送");
}
}
class SiteMessagePushServiceImpl implements MessagePushService {
@Override
public void sendMessage(String messag