您的位置:首页 > 编程语言 > Java开发

Java设计模式应用——工厂模式

2017-06-09 21:39 369 查看
工厂模式有三种:简单工厂、工厂方法、抽象工厂

一、 抽象工厂

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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: