跟你说个简单的点的吧。你现在已经做好了一个项目,假如是学生成绩查询,那我们知道查询出的成绩肯定是按某一顺序进行排序的,当前是按学生姓名进行排序的,而且目前你只实现了这一个关键字排序。好了现在这个项目交付使用。之后,使用者对这样的排序不是十分地满意,再在要追加按学生的总分进行排序,前提要求是原来写好的那些代码一个字母都不能动。现在你做为这个项目的设计者,当初你认为应该如何设计这个呢?一般在设计时,做一个用于排序的接口(ScoreSort),在第一次项目时实现一个学生姓名排序的类(ScoreSortByName),再使用一个 XML 配置文件,将这个排序的类名写到配置文件中,在程序中我们只要写上:ScoreSort sort = (ScoreSort)Class.forName(implementClass).newInstance(); 其中 implementClass 就是从 XML 中读取具体的实现类。在第二次增加了按总分排序,那我们只需要增加一个按总分排序的实现类就可以了,要按这样排序的话,只需要将 XML 文件中的实现类名改掉就可以了。这样就保证了在即有代码下的扩展,符合面向对象设计原则中的“开-闭”原则。如果你想要有质的飞跃的话,光看一些 Java 语法方法的书是没有多大用处的,建议去学习一下:设计模式、面向对象设计原则等等之类属于思想层面的东西。
可以实现通用性,提高代码的重用,也就提高了程序的开发效率。
例如List这个接口,
下面的所有子类,都可以传参