background image

象":

                程序代码:
public interface Command {  public abstract void execute ( );}
   //具体不同命令/请求代码是实现接口 Command,下面有三个具体命令
                        程序代码:
public class Engineer implements Command {  
public void execute( ) {    //do Engineer's command  }

}

 public class Programmer implements Command {  

public void execute( ) {    //do programmer's command  }

}

public class Politician implements Command { 
 public void execute( ) {    //do Politician's command  }

  按照通常做法,我们就可以直接调用这三个 Command,但是使用 Command 模式,我们要将他们封装起来,
扔到黑盒子 List 里去:
   程序代码:
public class producer{  
public static List produceRequests() {
    List queue = new ArrayList();   

 queue.add( new DomesticEngineer() ); 

   queue.add( new Politician() );

    queue.add( new Programmer() );
    return queue;   }

}

这三个命令进入 List 中后,已经失去了其外表特征,以后再取出,也可能无法分辨出谁是 Engineer 
谁是 Programmer 了,看下面如何调用 Command 模式:
程序代码:
public class TestCommand {

public static void main(String[] args) {
        List queue = Producer.produceRequests();  

  for (Iterator it = queue.iterator(); it.hasNext(); )   

 //取出 List 中东东,其他特征都不能确定,只能保证一个特征是 100%正确,// 他们至少是接口 Command
的"儿子".所以强制转换类型为接口
Command((Command)it.next()).execute(); 

}


DAO:
 
    由此可见,调用者基本只和接口打交道,不合具体实现交互,这也体现了一个原则,面向接口编程,这样,以
后增加第四个具体命令时,就不必修改调用者 TestCommand 中的代码了.

12

、谈一下对 保障软件质量 的理解。