在面向对象程序设计时我们常常提到“接口”,然而在使用的时候确老是忽略它,很多开发者都认为不就是一个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即可。
先讲到这里,有时间的话,我再写写。。。