上周安排的写两篇设计模式的文章,结果一篇也没写,今天都给写了。回顾+反思。In this world he who stops ,won't get anything he wants!
工厂方法模式分为三种:
1.普通工厂模式 就是建立一个工厂类,对实现接口的一些类进行实例的创建
① 先建立一个“发送方法”的接口
package com.qiao.factory; public interface Sender { public void send(); }
② 建一个邮件发送类
package com.qiao.factory; public class MailSendFactory implements Sender { public void send() { System.out.println("send mail "); } }
③ 建一个短信发送类
package com.qiao.factory; public class SMSSendFactory implements Sender { public void send() { System.out.println("send sms "); } }
④ 工厂类
package com.qiao.factory; public class SendFactory { public Sender produce(String type){ if("sms".equals(type)){ return new SMSSendFactory(); }else if("mail".equals(type)){ return new MailSendFactory(); }else { throw new RuntimeException("请输入正确的类型"); } } }
⑤ 测试
@Test public void test1(){ String type = "ssms"; Sender send = new SendFactory().produce(type); send.send(); }
输出 : send sms
2.多个工厂模式 是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。
① 工厂类改为
package com.qiao.factory; public class SendFactory2 { public Sender mailSenderProduce(){ return new MailSendFactory(); } public Sender SmsSendProduce(){ return new SMSSendFactory(); } }
② 测试
@Test public void test2(){ Sender send = new SendFactory2().mailSenderProduce(); send.send(); }
输出 : send mail
3.静态工厂方法 就是将上面的方法改为静态方法,这样就不用new了
① 将工厂类改为
package com.qiao.factory; public class SendFactory3 { public static Sender mailSenderProduce(){ return new MailSendFactory(); } public static Sender SmsSendProduce(){ return new SMSSendFactory(); } }
②测试
@Test public void test3(){ Sender send = SendFactory3.mailSenderProduce(); send.send(); }
输出 :
send mail
以上例子都是抄别人的,写出来好让自己能更好的了解一下。
原文 http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html