面试题: 接口:interface IA 实现类:class A implements IA 子类型: class B extends A 问:System.out.println(Arrays.toString(B.class.getInterfaces()));输出结果是什么?为什么?结合上述内容,描述一种设计模式,并解释设计模式。
输出结果:[]
原因:B类型没有实现任何的实现接口。IA a = new B();底层:jvm是先将B类型的对象提升类型为父类型A,父类型A实现接口IA。----适配器模式。
适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(连接多个不同类型的中间类型,这个中间类型称为适配器)。例如:自定义的servlet和servlet接口之间的httpservlet;自定义的springmvc控制器类型springmvc内置接口controller中间类型httprequestrequestmapping。
适配器的应用:如果接口定义的方法比较多,且不是所有的方法都需要每次实现的时候,做自定义实现(关注度低),那么编写一个适配器,提供所有方法的默认实现,在子类型提供关注度高的方法的自定义实现。可以简化开发。
代理模式:没有真实业务处理能力,只有附加能力。(例如:租房的中介公司)
装饰模式:强化真实业务能力的。一定有一个源头,在源头上强化业务能力。