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();
}
在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
分享到:
相关推荐
理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy是代理的...
23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 建筑和软件中模式之异同 A. 创建模式 设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例...
Windows XP 编程环境:MyEclipse 6.0 主要技术:Java Swing实现窗体界面 JDBC实现数据库操作 系统架构:三层架构(MVC)+DAO设计模式 数据库:MySQL5.0 四、实习内容 1、系统功能需求 学生信息管理系统主要对在校...
Q0051 设计模式主要几种 "创建模式 factory工厂模式、prototype原始模型模式、singleton单例模式、builder建造模式 结构模式 facade门面模式、proxy代理模式、adapter适配器(变压器)模式、composite合成模式、...
面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...
能学到什么:①工厂模式、策略模式、观察者模 ;②java gui中的事件监听、事件触发、并发编程等内容 阅读建议:此资源以开发简化图书馆管理系统学习swing设计的原理和应用,不仅是代码编写实现也更注重内容上的需求...
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 数据库的隔离...
5. 设计模式:(框架中使用,是程序设计的高级思想) 1. 单例模式:(重点) 1. 概念:设计一个类,这个类只能创建一个对象。(限制创建对象对象数量) 2. 怎么设计? 控制创建对象的数量 => 创建...
本系统适用于普通固定资产的管理,在使用上力求操作容易,界面美观,另外,本 系统具有较高的扩展性和可维护性,可能在以后需要的时候进行软件升级。 通过本系统的应用,可以加强对公司企业固定资产的管理,减轻工作...
基于java web实现的一个图书商城源码+设计报告+sql数据库 该资源内项目源码是个人的课设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
\ 第11章 事件机制 李立夏介绍了Qt的事件处理模型,详细介绍了在Qt程序设计中处理事件的五种方法,并讨论了如何利用Qt事件机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了Qt的数据库处理,重点介绍了...
理财系统使用Eclipse作为开发工具,再配合当前最流行的MVC设计模式。该模式包含的对象大致有三种,分别为应用对象Model、屏幕表示方式VIEW以及用户界面定义的Controller输入方式。开发人员可以更加致力于业务处理,...
spring-boot-starter-web 为开发人员提供了嵌入的 Tomcat 和 Spring MVC 的依赖,可以快速构建 MVC 模式的 Web 工程。 在SOA和微服务中,用 Spring Boot 可以包装每个服务。Spring Cloud 即是一套基于 Spring Boot ...