Cosa si intende esattamente con il termine "client API"

4

Sto leggendo il libro Algorithms di Robert Sedgewick e vedo spesso il termine client API. Si prega di dare un'occhiata a questo esercizio:

Write an iterable Stack client that has a static method copy() that takes a stack of strings as argument and returns a copy of the stack. Note : This ability is a prime example of the value of having an iterator, because it allows development of such functionality without changing the basic API.

Sono confuso sul fatto che voglia che implementi l'API dello stack creando una classe concreta che implementa Stack o che vuole che scriva un programma che utilizza la funzionalità API Stack. Quindi vuole questo

class StackImpl implements Stack<Item>{
}

o questo?

public static void main(String[] args){
    Stack<String> stack = new Stack<String>();
    stack.push("to");
    stack.push("be");
    stack.push("or");
    stack.push("not");
    System.out.println(copy(stack));
}

public static Stack<String> copy(Stack<String> stack){
     //copy from stack to a new stack and return
}
    
posta Mikayil Abdullayev 02.11.2017 - 08:31
fonte

1 risposta

2

Quando hai un'API, il client è un codice che sfrutta la funzionalità offerta dall'API.

Non ho letto il libro, ma:

  • la seconda opzione sembra definitivamente conforme all'esercizio: hai un codice che implementa un copy() che fa affidamento sull'uso delle funzioni API per svolgere i suoi compiti, e per di più fornisci del codice dimostrativo che mostra come utilizzare copy() con l'API.
  • la prima opzione considera Stack come un'interfaccia. Ciò significherebbe che non esiste alcuna implementazione di Stack , ma che al contrario, devi fornire l'API. Quindi dovresti creare un provider / un'implementazione dell'API e non un client.
risposta data 02.11.2017 - 11:24
fonte

Leggi altre domande sui tag