• 设计模式之接口隔离原则示例


      如本例学生成绩管理程序,学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3 个模块中,其类图如图所示:

              

       源码如下:

    public class ISPtest
    {
        public static void main(String[] args)
        {
            InputModule input =StuScoreList.getInputModule();
            CountModule count =StuScoreList.getCountModule();
            PrintModule print =StuScoreList.getPrintModule();
            input.insert();
            count.countTotalScore();
            print.printStuInfo();
            //print.delete();
        }
    }
    //输入模块接口
    interface InputModule
    {
        void insert();
        void delete();
        void modify();
    }
    //统计模块接口
    interface CountModule
    {
        void countTotalScore();
        void countAverage();
    }
    //打印模块接口
    interface PrintModule
    {
        void printStuInfo();
        void queryStuInfo();
    }
    //实现类
    class StuScoreList implements InputModule,CountModule,PrintModule
    {
        private StuScoreList(){}
        public static InputModule getInputModule()
        {
            return (InputModule)new StuScoreList();
        }
        public static CountModule getCountModule()
        {
            return (CountModule)new StuScoreList();
        }
        public static PrintModule getPrintModule()
        {
            return (PrintModule)new StuScoreList();
        }
        public void insert()
        {
            System.out.println("输入模块的insert()方法被调用!");
        }
        public void delete()
        {
            System.out.println("输入模块的delete()方法被调用!");
        }
        public void modify()
        {
            System.out.println("输入模块的modify()方法被调用!");
        }
        public void countTotalScore()
        {
            System.out.println("统计模块的countTotalScore()方法被调用!");
        }
        public void countAverage()
        {
            System.out.println("统计模块的countAverage()方法被调用!");
        }
        public void printStuInfo()
        {
            System.out.println("打印模块的printStuInfo()方法被调用!");
        }
        public void queryStuInfo()
        {
            System.out.println("打印模块的queryStuInfo()方法被调用!");
        }
    }

      程序的运行结果如下:

    输入模块的insert()方法被调用!
    统计模块的countTotalScore()方法被调用!
    打印模块的printStuInfo()方法被调用!
  • 相关阅读:
    SQL函数介绍,SDE函数
    [API]Google的语音识别API,支持各种语言
    (C#)Windows Shell 外壳编程系列8 同后缀名不同图标?
    (C#)Windows Shell 外壳编程系列8 同后缀名不同图标?
    获取某路径下,最后被修改的文件
    centos7下关闭防火墙
    linux下常用命令
    unittest断言
    **目录找出最后一次修改的文件(html结果),发送报告到指定qq邮箱
    unittest,requests,assertEqual实战演练
  • 原文地址:https://www.cnblogs.com/jing99/p/12576787.html
Copyright © 2020-2023  润新知