Java编程23种设计模式之普通工厂模式

1、工厂方法模式(Factory Method)
工厂方法模式分为三种:
1.1、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
举例如下:(我们举一个推送信息的例子)
创建推送接口
public interface InfoSender {
//创建推送接口
public void send();
}
创建各种推送实现类:
=======邮箱推送
public class MailSend implements InfoSender {
// 邮箱推送
@Override
public void send() {
System.out.println("mail send");
}

}
====短信推送
public class SMSSend implements InfoSender {
// 短信推送
@Override
public void send() {
System.out.println("sms send");
}

}
===终端推送或是客户端推送
public class PushInfo implements InfoSender {
//终端推送
@Override
public void send() {

System.out.println("推送信息");
}

}
建信息推送工厂类
public class PushInfoFactory {
public InfoSender productPushInfo(String type) {
//根据不同类型生产不同信息推送方式
if("mail".equals(type))
{
return new MailSend();
}
else if("push".equals(type))
{
return new PushInfo();
}
else if("sms".equals(type))
{
return new SMSSend();
}
else
return null;
}
}
测试一下吧
public class FactoryTest {

public static void main(String[] args) {
// 创建工程
PushInfoFactory factory = new PushInfoFactory();
// 生产消息推送方法
InfoSender push = factory.productPushInfo("push");
// 推送
push.send();
}

}
1.2、多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
在PushInfoFactory 类中增加如下方法:
// 创建mail类型的信息推送方式
public InfoSender productMail() {
return new MailSend();
}

// 创建SMS类型的信息推送方式
public InfoSender productSMS() {
return new SMSSend();
}

// 创建Push类型的信息推送方式
public InfoSender ProductPush() {
return new PushInfo();
}
在FactoryTest 类中增加如下代码进行测试
// 创建mail工厂方法
InfoSender push2 = factory.productMail();
// 推送
push2.send();
1.3静态工厂方法模式,将多个工厂方法里的方法置为静态的,不需要创建实例,直接调用即可。
// 创建mail类型的信息推送方式
public static InfoSender productMail() {
return new MailSend();
}

// 创建SMS类型的信息推送方式
public static InfoSender productSMS() {
return new SMSSend();
}

// 创建Push类型的信息推送方式
public static InfoSender ProductPush() {
return new PushInfo();
}
在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值