java23种设计模式之一——工厂模式

来源:互联网 发布:杜绝 流氓 抓取数据 编辑:程序博客网 时间:2024/06/05 12:50

1.普通工厂模式

普通工厂模式是创建一个工厂,对实现同一个接受的不同类,根据参数进行实例的创建。

举例:设计发送邮件和短信的例子

首先,创建共同的接口

public interface Sender{

 public void Send();  

}

其次,创建两个实现类,分别实现发送邮件和短信

public class MailSender implenments Sender(){

@override

public void send(){

System.out.println("this is a mail sender");

}

}

public class SmsSender implenments Sender(){

@override
public void send(){
System.out.println("this is a sms sender");
}
}
最后创建工厂类,根据不同参数创建不同的Sender类
pubic class SendFactory(){
public Sender produce(String type){
if("mail".equals(type)){
return new MailSender();
}else if("sms".equals(type)){
return new SmsSender();
}else{
System.out.println("请输入正确的类型!");
return null;
}
}
}
测试类:
public class FactoryTest(){
public static void main(String [] args){
SendFactory factory = newSendFactory();
Sender sender = factory.produce("mail");
sender.sender();
}
}
输出:this is mail sender
2.多个工厂方法模式
对于普通工厂模式中,如果参数传递出错,那么就不能成功创建对象,多个工厂方法模式就是对这一弊端的改进。
直接改进工厂类,如下
pubic class SendFactory(){
public Sender produceMail(){
return new MailSender();
}
public Sender produceSms(){
return new SmsSender();
}
}
测试类如下:
public class FactoryTest(){
public static void main(String [] args){
SendFactory factory = new SendFactory();
Sender sender = factory.produceMail();
sender.sender();
}
}
输出:this is mail sender
3.静态工厂方法模式
将工厂类中的两个方法改成静态的,不需要创建工厂对象,直接可以调用
修改工厂类方法为静态
pubic class SendFactory(){
public static Sender produceMail(){
return new MailSender();
}
public static  Sender produceSms(){
return new SmsSender();
}
}
测试类如下:
public class FactoryTest(){
public static void main(String [] args){
Sender sender =SendFactory.produceMail();
sender.sender();
}
}
输出:this is mail sender
总体而言,凡是出现了大量的不同分类的产品需要创建,我们可以通过工厂模式来进行创建,第一种模式如果传入的字符有误则不能创建成功,第三种可以不需要创建对象直接创建对象。通常采用第三种。

0 0
原创粉丝点击