zoukankan      html  css  js  c++  java
  • 设计模式之接口隔离原则示例

      如本例学生成绩管理程序,学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 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()方法被调用!
  • 相关阅读:
    队列的定义与实现(C语言实现)
    在CTime类中重载<<和>>
    华为OJ:统计大写字母个数
    sql server smo
    应用服务器负载平衡集群
    存储过程如何执行的快速
    sql server 分布式事务
    代理服务器
    怎样实现数据库负载均衡集群
    多层插件开发框架
  • 原文地址:https://www.cnblogs.com/jing99/p/12576787.html
Copyright © 2011-2022 走看看