zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
  • 相关阅读:
    简易文法
    词法分析实验报告
    0909上级作业
    vs2008的快捷键
    一道C++笔试题说一些知识
    Effective C++读书笔记
    鼠标拖动物体DEMO
    CFileDialog类的使用以及在非MFC程序下使用MFC的类资源
    3D制作魔方
    使用DXUT框架简单处理鼠标事件
  • 原文地址:https://www.cnblogs.com/coshaho/p/6973873.html
Copyright © 2011-2022 走看看