设计模式之接口隔离原则示例
如本例学生成绩管理程序,学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 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()方法被调用!

浙公网安备 33010602011771号