从头认识java-7.6 适配设计模式究竟适配类?还是适配接口?
来源:互联网 发布:农村淘宝 土豪村 编辑:程序博客网 时间:2024/06/04 00:34
这一章节我们来讨论一下适配的问题?
说白了,就是可以使用任何对象调用某个方法,而这个对象只需要符合某种协议。
而这种协议的实现有两种方法:继承和接口,但是一般都是使用接口,因为他的代码复用性比继承强,而且继承本身还包含父类的很多实现,造成不必要的混淆。而且通过接口我们可以实现多重接口(类似多重继承)
下面是两组对比的代码:
package com.ray.ch07;class father {private int id = 0;private void sleep() {}public int run(int speed) {return speed;}}public class Test extends father {@Overridepublic int run(int speed) {// TODO Auto-generated method stubreturn super.run(speed);}}
通过继承,一般都是像上面的代码,Test单继承father,test对象只能向上转型为father类,如果需要多重继承,可能继承的层级就会骤然增多。
我们再来看看接口方面:
package com.ray.ch07;interface Son {void sleep();int run(int speed);}interface Mother {void eat();}public class Test implements Son, Mother {@Overridepublic void eat() {// TODO Auto-generated method stub}@Overridepublic void sleep() {// TODO Auto-generated method stub}@Overridepublic int run(int speed) {// TODO Auto-generated method stubreturn 0;}public static void main(String[] args) {Mother mother = new Test();mother.eat();Son son = new Test();son.sleep();son.run(2);}}
在上面的代码里面Test可以非常容易的向上转型为Son和Mother这两个类,从多态的角度出发,使用接口来适配代码的重用性大大的增加,而且代码更加灵活。
总结:这一章节主要讨论适配的实现中使用哪个,我们推荐使用接口,因为他带来更多的灵活性和代码的复用性。
这一章节就到这里,谢谢。
-----------------------------------
目录
0 0
- 从头认识java-7.6 适配设计模式究竟适配类?还是适配接口?
- 从头认识java-7.8 接口与工厂模式
- 从头认识设计模式-目录
- 从头认识java-7.2 接口
- 从头认识设计模式-策略模式-05-思考过程四:引入设计原则:面向接口编程
- 从头认识java-7.4 实现多重接口
- 从头认识java-7.7 嵌套接口
- 从头认识设计模式-策略模式-03-思考过程二:在每一个类里面单独增加方法或者增加接口
- 从头认识设计模式-策略模式-01-原始应用场景
- 适配器设计模式---接口适配
- 设计模式【8】:外观设计【接口适配】
- 设计模式 ——接口适配
- 从头认识java-7.3 接口怎样解耦?
- 从头认识java-7.5 怎样通过继承扩展接口?
- 从头认识java-8.10 接口里面的类
- 从头认识java-9.12 接口Collection与Iterator
- 从头认识java-13.3 泛型接口的使用
- 从头认识java-目录
- 抽象类 接口
- java里面的枚举
- Java生成MD5字符串
- HDU 4455 Substrings(递推+优化)
- NFA-DFA(c++实现代码c#实现画图)
- 从头认识java-7.6 适配设计模式究竟适配类?还是适配接口?
- week10---11月11日 JS基础(四)
- OpenGL_Qt学习笔记之_03(平面图形的着色和旋转)
- audio和EMBED配合同时兼容IE8和safiri
- hihocoder #1099 枚举
- oracle参数open_cursors和session_cached_cursor详解!
- Java读取xml文件的四种方法
- ASP.NET多文件上传实例
- Qt从零开始制作串口调试助手-(第四章、新建“串口配置界面”和“关于界面”)-Creator_Ly