java 设计模式之工厂模式

来源:互联网 发布:java栈和队列的区别 编辑:程序博客网 时间:2024/06/05 14:25

本文参考文章 https://my.oschina.net/u/238082/blog/214548


工厂模式分为三种:

1:普通工厂模式 

2:多个工厂模式 ()是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。)

3:静态工厂模式 (将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。)


本文以普通工厂为例:(我们举一个发送邮件和短信的例子),下面直接上代码。

(例子换汤不换药咱就不做修改了)


//主函数,工厂入口 

public class FactoryTest {
public static void main(String[] args) {
SendFactory sendFactory=new SendFactory();
Sender sender=sendFactory.producSMS();
sender.Send();
}
}

/**
 * 工厂模式接口创建二者的共同接口  这个是传达命令的地方
 * @author tianruizhong
 *
 */
public interface Sender {
 public void Send(); 
}

/**
 * 工厂类 在这里进行数据的分析传递
 * @author tianruizhong
 *
 */
public class SendFactory {
//这是普通工厂时做的判断的方法
// public Sender produc(String type){
// if (type.equals("SMS")) {
// return new SmsSender();  
// }else if (type.equals("mail")) {
// return new MailSender();  
// }else {
// System.out.println("请输入正确的类型!");
// return null;
// }
// }
//发送短信  这是多个工厂时要修改的方法
public Sender producSMS(){
return  new SmsSender();  
}
//发送邮件
public Sender producMail(){
return  new MailSender();  
}
}

/**
 * 接收命令-》执行发送邮件的实体类
 * @author tianruizhong
 *
 */
public class SmsSender implements Sender{
@Override
public void Send() {
// TODO Auto-generated method stub
System.out.println("this is SMS SendMessage!");
}

}

/**
 * 接受命令-》执行发送邮件的实体类
 * @author tianruizhong
 *
 */
public class MailSender implements Sender{
// 实现接口方法
@Override
public void Send() {
// TODO Auto-generated method stub
System.out.println("this is mailsender!");
}
}




大体的思路:main函数-》发布命令到工厂-》-》通过接口发送命令-》合适的人员进行相应的活动

阅读全文
1 0
原创粉丝点击