工厂方法模式(Factory Method)
来源:互联网 发布:sqlserver配置要求 编辑:程序博客网 时间:2024/06/05 19:35
工厂方法模式适合于对实现了同一接口或继承了同一父类的一些类进行实例的创建。一般是通过定义一个工厂类,并在其方法中实现对具有上述特点的类对象的创建。
根据具体产生类对象的方法定义形式,又可以将其分为普通工厂方法模式、多个工厂方法模式和静态工厂方法模式。
一、普通工厂方法模式:
常见的经典写法如下(以发送邮件和短信为例):
1.定义邮件类和短信类具有的共同接口:
1 interface Sender{2 3 public void sender();4 5 }
2.定义邮件类和短信类:
1 class MailSender implements Sender{2 3 @Override4 public void send() {5 System.out.println("发送邮件");6 }7 8 }
1 class SmsSender implements Sender{2 3 @Override4 public void send() {5 System.out.println("发送短信");6 }7 8 }
3.定义工厂类:
1 class SenderFactory { 2 3 public Sender produce(String type) { 4 if (type.equals("mail")) { 5 return new MailSender(); 6 } else if (type.equals("sms")) { 7 return new SmsSender(); 8 } else { 9 return null;10 }11 }12 13 }
4.测试生成MailSender和SmsSender对象:
1 package com.qqyumidi; 2 3 public class FactoryMethodTest { 4 5 public static void main(String[] args) { 6 SenderFactory factory = new SenderFactory(); 7 Sender mailSender = factory.produce("mail"); 8 Sender smsSender = factory.produce("sms"); 9 }10 11 }
二、多个工厂方法模式:
将普通工厂模式中的工厂类中创建类的方法从依赖于参数判断改为直接针对每种对象各自定义一个生产方法。
具体代码如下:
1 class SenderFactory { 2 3 public Sender produceMail(){ 4 return new MailSender(); 5 } 6 7 public Sender produceSms(){ 8 return new SmsSender(); 9 }10 11 }
三、静态工厂方法模式:
静态工厂方法模式与前面两种具体的方法定义不同在于方法被定义成静态的,这样可以不通过创建工厂实例就能直接获取到目标类的对象。
1 class SenderFactory { 2 3 public static Sender produceMail(){ 4 return new MailSender(); 5 } 6 7 public static Sender produceSms(){ 8 return new SmsSender(); 9 }10 11 }
对于工厂方法模式,推荐使用第三种写法。
四、原文博客地址
http://www.cnblogs.com/lwbqqyumidi/p/3744842.html
0 0
- 工厂方法模式( Factory Method 模式 )
- 工厂方法(Factory Method)模式
- 工厂方法(Factory Method)模式
- 工厂方法(Factory Method)模式
- 工厂方法模式(Factory Method)
- .net 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式(factory method pattern)
- 工厂方法(Factory Method)模式
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法(Factory Method)模式
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- 工厂方法模式(Factory Method)
- UIColor扩展(colorWithHexString)
- Recycleview嵌套ScrollView使用存在的问题
- idea jrebel6 安装,破解
- 数组大折腾2
- Java生成验证码、随机生成验证码
- 工厂方法模式(Factory Method)
- ubuntu android环境配置
- 第十一周求两个整数的最大公约数和最小公倍数
- CentOS7上安装php-mcrypt的步骤
- ABAP 行列转换的方法
- SOAPfuse——融合转录本鉴定软件使用说明
- 时间的空隙
- 简单的单列模式
- Android编程_创建和删除文件夹和文件