工厂模式有三种:简单工厂、工厂方法、抽象工厂

一、 抽象工厂

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设计模式应用——工厂模式的更多相关文章

  1. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

  2. Java设计模式之工厂模式(Factory模式)介绍(转载)

    原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...

  3. Java 设计模式之工厂模式(二)

    原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...

  4. 浅析JAVA设计模式之工厂模式(二)

    1 工厂方法模式简单介绍 工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类.而是一个抽象工厂,提 ...

  5. java设计模式2————工厂模式

    1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...

  6. java 设计模式之工厂模式与反射的结合

    工厂模式: /**  * @author Rollen-Holt 设计模式之 工厂模式  */   interface fruit{     public abstract void eat(); } ...

  7. JAVA设计模式--抽象工厂模式

    抽象工厂设计模式 1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用.来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):抽象工厂角色: 这是工厂方法模式的 ...

  8. Java设计模式之-----工厂模式(简单工厂,抽象工厂)

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...

  9. Java设计模式之工厂模式(简单工厂模式+工厂方法模式)

    摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...

  10. java设计模式之一工厂模式

    简单工厂模式是java设计模式中最简单的设计模式之一: 工厂模式是最常用的设计模式之一. 工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模 ...

随机推荐

  1. 在 arc里面打印 引用计数的方法

    查阅资料:   You can use CFGetRetainCount with Objective-C objects, even under ARC: NSLog(@"Retain c ...

  2. 自定义tarBar

    使用tarBar大多数情况在我们都是默认的tarBarButton尺寸和位置但是如果我们想,希望像新浪微博那样的tarBar,就需要自定义了. 1.本质上其实就是通过我们的主控制器中以KVC的方式重新 ...

  3. Linux at 定时任务

    命令格式:at[参数][时间]  请注意系统时间是UTC 命令功能:在一个指定的时间执行一个指定任务,只能执行一次.假如该时间已过去,那么就放在第二天执行. /var/spool/mail/这里是任务 ...

  4. 基于pandas python sklearn 的美团某商家的评论分类(文本分类)

    美团店铺评价语言处理以及分类(NLP) 第一篇 数据分析部分 第二篇 可视化部分, 本文是该系列第三篇,文本分类 主要用到的包有jieba,sklearn,pandas,本篇博文主要先用的是词袋模型( ...

  5. inline-blcok 之间的空白间隙

    前言: inline-blcok 布局时,通常情况下, inline-blocks 之间有空白,尽管通常我们是不想要的,毕竟不像padding或者margin一样好控制,如图: <div cla ...

  6. HOJ 2133&POJ 2964 Tourist(动态规划)

    Tourist Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1503 Accepted: 617 Description A ...

  7. TOP100summit 2017 七牛云许式伟:不用JAVA和C语言,我为什么坚持Go语言

    本文编辑:Cynthia 2009年,谷歌发布第二款开源编程语言,Go语言.8年过去了,很多初创公司早期使用Go进行开发,包括云计算巨头Docker.而Go语言在中国的普及程度还比不上JAVA和C语言 ...

  8. POJ 2318 - TOYS - [计算几何基础题]

    题目链接:http://poj.org/problem?id=2318 Time Limit: 2000MS Memory Limit: 65536K Description Calculate th ...

  9. LDA模型数据的可视化

    """ 执行lda2vec.ipnb中的代码 模型LDA 功能:训练好后模型数据的可视化 """ from lda2vec import p ...

  10. Docker,docker-machine,docker-composer

    https://docs.docker.com/engine/installation/mac/ Docker值得关注的特性文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里.资源隔离:系统资 ...