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();
}
}
总体而言,凡是出现了大量的不同分类的产品需要创建,我们可以通过工厂模式来进行创建,第一种模式如果传入的字符有误则不能创建成功,第三种可以不需要创建对象直接创建对象。通常采用第三种。
0 0
- java23种设计模式之一——工厂模式
- java23种设计模式之一--模板模式
- Java23种设计模式的研究之一(工厂方法模式(Factory Method))
- java23种模式之工厂模式——侠盗联盟
- java23种设计模式之抽象工厂模式
- Java23种设计模式:工厂模式(二)
- java23中设计模式之工厂模式
- Java23种设计模式——Iterator设计模式
- java23种设计模式之一--单例模式
- Java23种设计模式
- JAVA23种设计模式
- JAVA23种设计模式
- JAVA23种设计模式
- JAVA23种设计模式
- JAVA23种设计模式
- JAVA23种设计模式
- java23种设计模式
- Java23种设计模式
- OpenCV入门(二十八) -- 多边形逼近
- [AHK]获取多个文件路径,构造命令行,发送给Beyond Compare等程序
- <Android>关于获取资源文件R中的数据
- HDU 4309 Seikimatsu Occult Tonneru 网络流+状压
- Mysql字符串截取函数SUBSTRING的用法说明
- java23种设计模式之一——工厂模式
- 我所钟爱的电影之一-文艺片
- Android百度地图之定位功能(结合百度地图API)
- = Day 2 = 《Basketball Game》
- mingw编译opencv2.4.8
- Python字符串编码+MySQLdb中的中文字符问题
- apache建立虚拟目录
- Android获取网络状态变化
- 添加自定义事件以及对osg事件队列的简单理解