面向对象——接口(一)
来源:互联网 发布:软件测试全程项目 编辑:程序博客网 时间:2024/06/05 09:52
在面向对象程序设计时我们常常提到“接口”,然而在使用的时候确老是忽略它,很多开发者都认为不就是一个interface么,没有什么好注意的,事实上确实没有什么,但是我们确实要好好注意它,使用好了会给你带来很多便利,比如容易扩展,这样能让你写的程序更像一个作品。说“接口”没什么好讲的,因为他就是一个interface,程序里面都是一堆抽象方法,我个人理解,“接口”事实上就是一个“标准”,要求大家(调用者和实现者)都遵循这个“标准”就好了,理解了这一点你就可以随便怎么整,下面就来个简单的实例吧,比如我要在一某个界面上实现编辑的Button(也就是点击这个编辑button就能转到编辑界面):
我们一般的做法是如下:
package com.bb2.bozai;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame {
private JButton btnEdit = new JButton();
private JPanel centerPane = new JPanel(new BorderLayout());
private void init(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,300);
this.getContentPane().add(this.centerPane);
this.centerPane.add(new JLabel("这里填写主要的显示内容"));
this.centerPane.add(this.btnEdit,BorderLayout.SOUTH);
this.btnEdit.setText("编辑");
this.setVisible(true);
this.btnEdit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.out.println("从这里跳转到编辑界面,比如从2bizbox A2销售单跳到编辑2bizbox A2中的销售单界面");
}
});
}
public Main(){
init();
}
public static void main(String[] args){
Main main = new Main();
}
}
也就是在此详细界面中直接new一个button,然后再给该button做一个事件,这样看上去是没有问题的,但是当有许许多多的页面需要编辑时,那你所要做的是每个界面都重复这些动作。事实上你可以想象一下,这些动作有很大的相似处,是不是可以抽象(接口也是抽象)一把,所有的编辑是不是可以抽象一下,然后在调用它(也就是调用编辑事件)的方法中实现该抽象方法,与此同时你也可以把这个编辑的button封装一下,该button的click事件完全放到该button中,如下:
接口:
package com.bb2.bozai;
public interface IntEdit {
public void toEditPage();
}
编辑Button类:
package com.bb2.bozai;
import java.awt.event.*;
import javax.swing.*;
public class EditButton extends JButton {
public EditButton(final Object parent){
this.setText("编辑");
this.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(parent instanceof IntEdit){
IntEdit intEdit = (IntEdit)parent;
intEdit.toEditPage();
}
}
});
}
}
调用的类:
package com.bb2.bozai;
import java.awt.*;
import javax.swing.*;
public class Main2 extends JFrame implements IntEdit {
private EditButton btnEdit;
private JPanel centerPane = new JPanel(new BorderLayout());
private void init(){
btnEdit = new EditButton(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,300);
this.getContentPane().add(this.centerPane);
this.centerPane.add(new JLabel("www.2bizbox.cn"));
this.centerPane.add(this.btnEdit,BorderLayout.SOUTH);
this.setVisible(true);
}
public Main2(){
init();
}
public static void main(String[] args){
Main2 main = new Main2();
}
public void toEditPage() {
System.out.println("从这里跳转到编辑界面,比如从2bizbox A2销售单跳到编辑2bizbox A2中的销售单界面");
}
}
如果还有其他的界面需要编辑的话,直接继承才编辑的接口(IntEdit),然后再在方法中new一个EditButton即可。
先讲到这里,有时间的话,我再写写。。。
- 面向对象——接口(一)
- 面向对象—接口
- 面向接口设计和编程——(面向对象、面向接口、面向过程、面向实现)
- JS面向对象(三)— 接口
- 面向对象——接口
- 面向对象——接口
- Java——面向对象(一)
- C#——面向对象 (一)
- 面向对象(一)——类
- Java—面向对象(一)
- Java基础—面向对象(一)
- java—面向对象、一
- 面向对象——(9)封装和接口
- 黑马程序员——面向对象(继承、抽象、接口)
- 面向对象(接口——定义interface)
- 面向对象9——接口
- 2、面向对象——接口
- OOP面向对象——接口&&抽象
- pthread互斥信号量使用总结
- php脚本的执行过程(编译与执行相分离)
- 黑马训练营-位移运算
- 连接池有那几种 分别有什么区别
- windows和linux获取文件夹内容的一种方法
- 面向对象——接口(一)
- 修改Windows下的Memcached下的服务端口
- CSS的未来:一些试验性CSS属性
- 1022. Genealogical Tree
- sysbench-一个系统及mysql性能测试的好工具!
- 标准C语言库 Glibc 2.15
- Android重要组件使用方法汇总
- UESTC :吴神的战役
- 深入android界面构造