什么叫根据接口编程,烟灰也是突然想到了这个词,接口是什么?行为的定义,以前一直都在懵懵懂懂中度过,一直都没想明白,那么怎么才能做到组件的最大利用率?
或者说,当我的前台组件删除之后,我的后台组件是否能够继续使用?
不要曲解我的意思,我的意思是指,当我不再使用以前的前台View组件之后,我的后台是否可以在不变的情况下继续使用?答案就在这里了,根据接口编程!

下面看一个举例:不是代码,不用紧张,看代码很头痛!

首先是登陆,是否有一个登陆窗口?嗯。。。确实
那么这个登陆窗口怎么体现?
实话,一百个人有一百个实现方式!
好了。。。。这下好了。。。重复利用率降低了
那么我在想,是不是可以给每个人提供一个行为准则呢?确实可以!那就是接口(最开始学习java的时候一直没明白这个准则有什么用,为什么要称为接口,Oh~ha,现在知道了?)
一个登陆窗口,我需要的属性有哪些?id、password哈!就这么点,那么可以定义两个方法

public String getId();

public String getPassword();

然后就是怎么确定我的窗口是已经点击了OK或者是CANCEL?这是一个比较考验人的问题,那么我们需要一个方法以及两个常量字段!

public int getOption();

int OK_OPTION = 1;

int CANCEL_OPTION = 0;


这样就可以让外部知道我们的对话框弹出之后点击了哪个按钮
嗯,用户习惯有阻塞,或许你要说……谁说一定就要阻塞?谁知道呢?你可以自己写阻塞嘛
最后也是最容易忽略的地方。。。显示窗口……没这个方法完全是不可能的。。。。

public int showDialog();


注意到了么?那个返回值,int!对了,这个就是提供给我们的阻塞写法的~

整段代码如下。。。
public interface LoginUI {

    
public int showDialog();

    
public int getOption();

    
public String getId();

    
public String getPassword();

    
int OK_OPTION = 1;

    
int CANCEL_OPTION = 0;
}
好了,我们可以根据接口编程了,登陆对话框是什么?
鬼知道,谁实现了这个接口谁就可以实现登陆对话框~
下面我讲解如何根据接口编程了

public interface LoginObserver extends Observer{

   
/**
     * 登陆通知,告诉程序,用户选择了登陆事件
     
*/
    
public void login();

    
/**
     * 退出通知,告诉程序,用户选择了退出事件
     
*/
    
public void quit();

    }

这个东西学过设计模式的同志应该非常的熟悉……
对,观察者,嗯。。。我是个人理解,当一个事件被调用时,那么我们就要告诉观察者你该做点什么然后观察者会调用update方法

好了,不说这些看看,我们该做点什么
对了,登陆,那么方法应该这样写,当然我的需求是:当用户点击登陆时,会弹出对话框,如果验证失败,将保持对话框,除非用户点击取消,OK,看段代码

public void login() {
        
int result;
        String id;
        String psw;
        
do{
            result 
= loginUI.showDialog();
            //看见了吧?我这里是设置的阻塞模式,当然你可以不必这样写
            id 
= loginUI.getId();
            psw 
= loginUI.getPassword();
        }
while(result == loginUI.OK_OPTION && !loginModel.login(id, psw));
        
//除非用户选择取消,该登陆通知者会一直通知用户登陆
        update();
         //更新方法
    }

OK,loginModel也是一个接口,定义如下
public interface LoginModel {

    
public boolean login(String id, String psw);

    
public User getLoginUser();

    
public Popedom getLoginPopedom();

    
public boolean isLogin();

    
public void quit();
}


看到这里,大概明白了吧?怎么根据接口编程?
嗯。。。烟灰最近也算是悟出了,之后我要做的就是把前后台的代码分类,然后放在不同的包里,将接口完全独立出来,不论我的类如何的变,几个包都能协同工作,牛叉吧,传说中的接口编程就是这样了,其实很简单,不是么?