java代理
2015-09-30 09:59
351 查看
java并没有提供对代理的直接支持。这是继承与组合之间的中庸之道。
示例:飞机的控制模块
虽然通过继承可以实现飞机的这些功能,但是Plane并非真正的PlaneControls,这样总感觉不是很合理,然而代理可以解决这一问题。
示例:飞机的控制模块
public class PlaneControls{ void up (int distance){} void down(int distance){} void left(int distance){} void right(int distance){} void forward(int distance){} }构造飞机的一种方式是基础控制模块。
public class Plane extends PlaneControls{ private String name; Public Plane(String name){this.name = name;) public static void main(String[] args){ Plane p =new Plane("歼-31"); p.forward(1000); } }
虽然通过继承可以实现飞机的这些功能,但是Plane并非真正的PlaneControls,这样总感觉不是很合理,然而代理可以解决这一问题。
public class PlaneDemo{ private String name; private PlaneControls controls = new PlaneControls();//定义另一个类的引用 public void PlaneDemo(String name){ this.name = name; } public void up (int distance){ controls.up(distance); } public void down (int distance){ controls.down(distance); } public void left (int distance){ controls.left(distance); } public void right(int distance){ controls.right(distance); } public void forward(int distance){ controls.forward(distance); }代理是继承与组合的结合,在新类中定义另一个类的引用,通过引用调用方法(controls.up(distance);)从而实现新类也有此功能。我们使用带来可以拥有更多的控制了,因为我们可以选择只提供在成员对象中的方法的某个子集。
相关文章推荐
- Java Bean 属性命名规范问题分析
- java类和对象实例分析
- java动态参数列表即可变参数【可变的参数类型,也称为不定参数类型。英文缩写是varargus,还原一下就是variable argument type。】
- Java基础知识之泛型全接触
- HBase java关键API
- StrutsPrepareFilter和StrutsExecuteFilter拦截
- spring中Bean的作用域
- 【SSH快速进阶】——Hibernate环境搭建
- java异常整理
- 利用Spring.NET实现WCF的AOP编程
- 打造Eclipse的Sublime Text风格全黑酷炫模式,不伤眼!!!
- eclipse在Ubuntu 12.04下的安装
- Java反射机制
- test9.4
- Java 多线程断点下载文件
- Struts2-Results机制
- java提高篇(四)-----理解java的三大特性之多态
- (转)java提高篇(四)-----理解java的三大特性之多态
- JAVA获取相对时间,几分前、几天前、几月前
- JAVA获取相对时间,几分前、几天前、几月前