Java设计模式应用——工厂模式
工厂模式有三种:简单工厂、工厂方法、抽象工厂
一、 抽象工厂
1、 一个可以生产多种产品的工厂;
2、 不改变工厂无法生产新的产品。
package com.coshaho.learn.factory; public class SimpleFactory
{
// 绝对值告警
public class AbsoluteAlarm
{} // 历史值告警
public class HistoryAlarm
{} // 简单工厂
public class AlarmFactory
{
public AbsoluteAlarm createAbsoluteAlarm()
{
return new AbsoluteAlarm();
} public HistoryAlarm createHistoryAlarm()
{
return new HistoryAlarm();
}
}
}
二、 工厂方法
1、 每个工厂只能生产一种产品;
2、 想要生产新产品只需要新建一个工厂即可;
3、 产品过多,可能导致工厂过多。
package com.coshaho.learn.factory; public class FactoryMethod
{
// 绝对值告警
public class AbsoluteAlarm
{} // 历史值告警
public class HistoryAlarm
{} // 绝对值告警工厂
public class AbsoluteAlarmFactory
{
public AbsoluteAlarm createAbsoluteAlarm()
{
return new AbsoluteAlarm();
}
} // 历史值告警工厂
public class HistoryAlarmFactory
{
public HistoryAlarm createHistoryAlarm()
{
return new HistoryAlarm();
}
}
}
三、 抽象工厂
1、 抽象工厂可以生产一系列产品;
2、 产品系列中的每类产品有多种型号;
3、 继承于抽象工厂的具体工厂只能生产一种系列产品;
4、 新增一个具体工厂则可以新增一个产品系列;
5、 不改变抽象工厂代码无法增减产品系列中的产品类型。
package com.coshaho.learn.factory; public class AbstractFactory
{
// 告警
public interface Alarm
{} // 绝对值告警
public class AbsoluteAlarm implements Alarm
{} // 报表
public interface Report
{} // Excel报表
public class ExcelReport implements Report
{} // 抽象工厂
public interface IFactory
{
public Alarm createAlarm();
public Report createReport();
} // 具体工厂
public class Factory
{
public Alarm createAlarm()
{
return new AbsoluteAlarm();
}
public Report createReport()
{
return new ExcelReport();
}
}
}
Java设计模式应用——工厂模式的更多相关文章
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- Java设计模式之工厂模式(Factory模式)介绍(转载)
原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...
- Java 设计模式之工厂模式(二)
原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...
- 浅析JAVA设计模式之工厂模式(二)
1 工厂方法模式简单介绍 工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类.而是一个抽象工厂,提 ...
- java设计模式2————工厂模式
1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...
- java 设计模式之工厂模式与反射的结合
工厂模式: /** * @author Rollen-Holt 设计模式之 工厂模式 */ interface fruit{ public abstract void eat(); } ...
- JAVA设计模式--抽象工厂模式
抽象工厂设计模式 1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用.来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):抽象工厂角色: 这是工厂方法模式的 ...
- Java设计模式之-----工厂模式(简单工厂,抽象工厂)
一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...
- Java设计模式之工厂模式(简单工厂模式+工厂方法模式)
摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...
- java设计模式之一工厂模式
简单工厂模式是java设计模式中最简单的设计模式之一: 工厂模式是最常用的设计模式之一. 工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模 ...
随机推荐
- 添加Net4CollectionTypeFactory的原因
.NET4.0已经实现了该功能 http://jahav.com/blog/nhibernate-using-net-4-iset/ NHibernate using .NET 4 ISet 0 Co ...
- all hands meeting
今天某导师联系我说:"There will be an allhand" 搞不懂allhand是啥意思……他口头跟我解释的是就是个茶话会性质的小会~ 我在网上查了一下,这个用法很少 ...
- MatLab Load cv::Mat 导入数据
我们有时候在项目中需要将OpenCV中的cv::Mat导入MatLab进行分析与处理,那么如果把数据转过去呢,我们的做法是首先将cv::Mat导出为txt文件,或者是yml文件,请参见我之前的博客Wr ...
- Nginx通过header转发
假设添加自定义头 "my-header",当"my-header"等于test时,转发到192.168.1.113 请求如下 wget --header=&qu ...
- HTML表单的运用
没学习HTML表单之前,觉得文本框.密码框.隐藏域.单选按钮.复选框等这些在平常页面常见到的表单不起眼,挺简单,到自己用代码区实现将它们灵活串联运用起来,才发现一点都不简单.看着容易,自己操作还是出现 ...
- Asp.net MVC]Asp.net MVC5系列——在模型中添加
目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...
- ELK之nginx日志使用json格式输出
json Nginx默认日志输出格式为文本非json格式,修改配置文件即可输出json格式便于收集以及绘图 修改nginx配置文件添加配置,增加一个json输出格式的日志格式 log_format a ...
- VUE中父组件向子组件传递数据 props使用
VUE中,子组件是不能直接访问父组件的数据(一般来说,当然如果你要破坏原则也是可以),如下< <body> <div id="fathercomponent" ...
- ubuntu16.04下安装pycharm
下面开始教程 先在PyCharm官网下载安装包 链接:https://www.jetbrains.com/pycharm/download/#section=linux 选择平台为Linux,可以看到 ...
- CodeForces 551C - GukiZ hates Boxes - [二分+贪心]
题目链接:http://codeforces.com/problemset/problem/551/C time limit per test 2 seconds memory limit per t ...