`
qkf15274
  • 浏览: 9254 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java编程23种设计模式之普通工厂模式

阅读更多
1、工厂方法模式(Factory Method)
工厂方法模式分为三种:
1.1、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
举例如下:(我们举一个推送信息的例子)
创建推送接口
public interface InfoSender {
//创建推送接口
public void send();
}
创建各种推送实现类:
=======邮箱推送
public class MailSend implements InfoSender {
// 邮箱推送
@Override
public void send() {
System.out.println("mail send");
}

}
====短信推送
public class SMSSend implements InfoSender {
// 短信推送
@Override
public void send() {
System.out.println("sms send");
}

}
===终端推送或是客户端推送
public class PushInfo implements InfoSender {
//终端推送
@Override
public void send() {

System.out.println("推送信息");
}

}
建信息推送工厂类
public class PushInfoFactory {
public InfoSender productPushInfo(String type) {
//根据不同类型生产不同信息推送方式
if("mail".equals(type))
{
return new MailSend();
}
else if("push".equals(type))
{
return new PushInfo();
}
else if("sms".equals(type))
{
return new SMSSend();
}
else
return null;
}
}
测试一下吧
public class FactoryTest {

public static void main(String[] args) {
// 创建工程
PushInfoFactory factory = new PushInfoFactory();
// 生产消息推送方法
InfoSender push = factory.productPushInfo("push");
// 推送
push.send();
}

}
1.2、多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
在PushInfoFactory 类中增加如下方法:
// 创建mail类型的信息推送方式
public InfoSender productMail() {
return new MailSend();
}

// 创建SMS类型的信息推送方式
public InfoSender productSMS() {
return new SMSSend();
}

// 创建Push类型的信息推送方式
public InfoSender ProductPush() {
return new PushInfo();
}
在FactoryTest 类中增加如下代码进行测试
// 创建mail工厂方法
InfoSender push2 = factory.productMail();
// 推送
push2.send();
1.3静态工厂方法模式,将多个工厂方法里的方法置为静态的,不需要创建实例,直接调用即可。
               // 创建mail类型的信息推送方式
public static InfoSender productMail() {
return new MailSend();
}

// 创建SMS类型的信息推送方式
public static InfoSender productSMS() {
return new SMSSend();
}

// 创建Push类型的信息推送方式
public static InfoSender ProductPush() {
return new PushInfo();
}
在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
分享到:
评论

相关推荐

    java 常用设计模式chm

    理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy是代理的...

    二十三种设计模式【PDF版】

    23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 建筑和软件中模式之异同 A. 创建模式 设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例...

    java程序设计实习报告---学生信息管理系统的设计与开发.doc

    Windows XP 编程环境:MyEclipse 6.0 主要技术:Java Swing实现窗体界面 JDBC实现数据库操作 系统架构:三层架构(MVC)+DAO设计模式 数据库:MySQL5.0 四、实习内容 1、系统功能需求 学生信息管理系统主要对在校...

    java面试800题

    Q0051 设计模式主要几种 "创建模式 factory工厂模式、prototype原始模型模式、singleton单例模式、builder建造模式 结构模式 facade门面模式、proxy代理模式、adapter适配器(变压器)模式、composite合成模式、...

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    毕业设计JAVA Gui Swing 仓库商品管理系统(文档+视频+源码)

    能学到什么:①工厂模式、策略模式、观察者模 ;②java gui中的事件监听、事件触发、并发编程等内容 阅读建议:此资源以开发简化图书馆管理系统学习swing设计的原理和应用,不仅是代码编写实现也更注重内容上的需求...

    Java_JDBC由浅入深

    7.4 DAO设计模式与工厂模式的整合 49 7.5 DAO设计模式测试 52 第八节 JDBC对事务的支持 52 8.1 模拟转账 53 8.2 jdbc默认事务 54 8.3 事务提交与回滚 54 8.4 设置保存点 55 8.5 JTA事务的介绍 56 8.6 数据库的隔离...

    day020-继承加强和设计模式代码和笔记.rar

    5. 设计模式:(框架中使用,是程序设计的高级思想) 1. 单例模式:(重点) 1. 概念:设计一个类,这个类只能创建一个对象。(限制创建对象对象数量) 2. 怎么设计? 控制创建对象的数量 => 创建...

    毕业设计-基于JAVA语言固定资产管理系统

    本系统适用于普通固定资产的管理,在使用上力求操作容易,界面美观,另外,本 系统具有较高的扩展性和可维护性,可能在以后需要的时候进行软件升级。 通过本系统的应用,可以加强对公司企业固定资产的管理,减轻工作...

    基于java web实现的一个图书商城源码+设计报告+sql数据库.zip

    基于java web实现的一个图书商城源码+设计报告+sql数据库 该资源内项目源码是个人的课设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    精通qt4编程(源代码)

    \ 第11章 事件机制 李立夏介绍了Qt的事件处理模型,详细介绍了在Qt程序设计中处理事件的五种方法,并讨论了如何利用Qt事件机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了Qt的数据库处理,重点介绍了...

    基于JavaWeb的家庭金融理财系统参考论文

    理财系统使用Eclipse作为开发工具,再配合当前最流行的MVC设计模式。该模式包含的对象大致有三种,分别为应用对象Model、屏幕表示方式VIEW以及用户界面定义的Controller输入方式。开发人员可以更加致力于业务处理,...

    基于springboot+uniapp微信小程序实现的学生互动课堂,采用前后端分离开发模式.zip

    spring-boot-starter-web 为开发人员提供了嵌入的 Tomcat 和 Spring MVC 的依赖,可以快速构建 MVC 模式的 Web 工程。 在SOA和微服务中,用 Spring Boot 可以包装每个服务。Spring Cloud 即是一套基于 Spring Boot ...

Global site tag (gtag.js) - Google Analytics