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函数-》发布命令到工厂-》-》通过接口发送命令-》合适的人员进行相应的活动
- Java设计模式之工厂设计模式
- [java]设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- JAVA设计模式之工厂设计模式
- java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- 《java设计模式》之工厂设计模式
- JAVA设计模式之工厂模式之简单工厂模式
- JAVA设计模式之工厂模式之工厂方法模式
- JAVA设计模式之工厂模式之抽象工厂模式
- Java设计模式之工厂
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- phpstorm 最新版本破解方法
- VS2013环境下MFC静态文本字体大小修改问题
- 这个环境能抓到多大的兔子?
- Fiddler查看https请求内容
- Android开发:Handler异步通信机制全面解析(包含Looper、Message Queue)
- java 设计模式之工厂模式
- 超简单好用的可拖动控件
- 分布式系统的架构思路
- 猎人团队的实力如何?
- C# 字典 Dictionary 遍历
- 402. Remove K Digits
- ng $scope()不刷新的问题
- Kafka学习总结(一)——Kafka简介
- shell获取linux系统参数方法总结