面向对象——接口(一)

来源:互联网 发布:软件测试全程项目 编辑:程序博客网 时间: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即可。


先讲到这里,有时间的话,我再写写。。。


原创粉丝点击