设计模式之JAVA----工厂模式
来源:互联网 发布:泛洪填充算法 编辑:程序博客网 时间:2024/06/07 05:41
普通工厂模式
定义:建立一个工厂类,对实现了同一接口的一些类进行实例的创建
1、创建接口
package com.hongshu.factory.ordinary.dao;/** * Description: 发送接口 * @since * @author HongShu * @version 1.0.0 * 2014年7月30日 上午11:14:17 */public interface Sender {public void send();}
2、接口实现
package com.hongshu.factory.ordinary.dao;/** * Description:发送接口实现 * @since * @author HongShu * @version 1.0.0 * 2014年7月30日 上午11:16:11 */public class MailSender implements Sender {@Overridepublic void send() {System.out.println("mial have successed!");}}
package com.hongshu.factory.ordinary.dao;/** * Description: * @since * @author HongShu * @version 1.0.0 * 2014年7月30日 上午11:17:09 */public class SmsSender implements Sender {@Overridepublic void send() {System.out.println("Sms have successed");}}
3、创建工厂方法
package com.hongshu.factory.ordinary;import com.hongshu.factory.ordinary.dao.MailSender;import com.hongshu.factory.ordinary.dao.Sender;import com.hongshu.factory.ordinary.dao.SmsSender;/** * Description: 普通工厂模式 * @since * @author HongShu * @version 1.0.0 * 2014年7月30日 上午11:12:46 */public class OrdinaryFactory {public Sender produce(String type){if("mail".equalsIgnoreCase(type)) return new MailSender();else if("sms".equalsIgnoreCase(type)) return new SmsSender();else {System.out.println("没有对应的工厂实现类");return null;}}}
4、测试
package com.hongshu.factory.ordinary;import com.hongshu.factory.ordinary.dao.Sender;/** * Description: * @since * @author HongShu * @version 1.0.0 * 2014年7月30日 上午11:21:47 */public class Test {public static void main(String[] args) {OrdinaryFactory factory = new OrdinaryFactory();Sender sender = factory.produce("sms");sender.send();sender = factory.produce("mail");sender.send();}}
多个工厂方法模式
定义:是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
创建工厂类
package com.hongshu.factory.more;import com.hongshu.factory.ordinary.dao.MailSender;import com.hongshu.factory.ordinary.dao.Sender;import com.hongshu.factory.ordinary.dao.SmsSender;/** * Description:多个工厂方法模式 * @since * @author HongShu * @version 1.0.0 * 2014年7月30日 下午1:38:55 */public class MoreFactory {public Sender produceMail(){return new MailSender();}public Sender produceSms(){return new SmsSender();}}
测试方法省略,如同普通工厂方法
静态工厂方法模式
定义:将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可
创建工厂类
package com.hongshu.factory.staticf;import com.hongshu.factory.ordinary.dao.MailSender;import com.hongshu.factory.ordinary.dao.Sender;import com.hongshu.factory.ordinary.dao.SmsSender;/** * Description:静态工厂方法 * @since * @author HongShu * @version 1.0.0 * 2014年7月30日 下午1:43:44 */public class StaticFactory {public static Sender produceMail(){return new MailSender();}public static Sender produceSms(){return new SmsSender();}}
测试类如同普通工厂类
总结
总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
0 0
- Java设计模式之工厂设计模式
- [java]设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- JAVA设计模式之工厂设计模式
- java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- 《java设计模式》之工厂设计模式
- JAVA设计模式之工厂模式之简单工厂模式
- JAVA设计模式之工厂模式之工厂方法模式
- JAVA设计模式之工厂模式之抽象工厂模式
- Java设计模式之工厂
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- Acmer语录
- uva 11029 Leading and Trailing
- NGUI 例子8 scroll view
- HDOJ3752
- Eclipse中Find Bugs插件的学习
- 设计模式之JAVA----工厂模式
- 通过经纬度计算两个之间的距离
- C# 适配数据库(待完成)
- Linux笔记 11 -- 网络编程
- 【HDU】3498 whosyourdaddy 重复覆盖入门题
- UVa10539 Almost Prime Numbers
- 引用作为函数参数
- 关于Makefile,Makefile.in,Makefile.am的问题
- malformed or corrupted AST file:'Unabled to load module "......Xcode/DerivedData/ModuleCache" '