工厂模式有三种:简单工厂、工厂方法、抽象工厂
一、 抽象工厂
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(); } } }
时间: 2024-12-25 05:24:27