Proxy pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: fix citazione web (v. discussione) |
Protection proxy in java |
||
Riga 83:
</source>
===Protection proxy
In questo esempio scritto in [[Linguaggio C Sharp|C#]], nella classe <code>RealClient</code> è memorizzato un numero di conto. Soltanto gli utenti che conoscono una [[password]] valida possono accedere a questo conto. Il <code>RealClient</code> è protetto dal <code>ProtectionProxy</code> che conosce la password. Prima di far leggere il numero di conto all'utente, il proxy richiede che questi si autentichi; Solo se la password introdotta è corretta il proxy invoca il <code>RealClient</code> per restituire il numero di conto all'utente.
Riga 145:
Console.Read();
}
}
}
</source>Segue lo stesso esempio implementato in [[Java (linguaggio)|Java]], in questo caso le implementazioni dell'interfaccia <code>Client</code> sono <code>RealClientImpl</code> e <code>ProtectionProxyClientImpl</code> .<source lang="java">
package fundamentalPatterns.protectionProxyPattern;
import java.util.Scanner;
public interface Client {
String getAccountNo();
}
public class RealClientImpl implements Client {
private String accountNo = "12345";
public RealClientImpl() {
System.out.println("RealClient: Initialized");
}
@Override
public String getAccountNo() {
System.out.println("RealClient's AccountNo: " + accountNo);
return accountNo;
}
}
public class ProtectionProxyClientImpl implements Client {
private String password; //password to get secret
private Client client;
private Scanner scanner = new Scanner(System.in);
public ProtectionProxyClientImpl(String pwd) {
System.out.println("ProtectionProxy: Initialized");
password = pwd;
client = new RealClientImpl();
}
/**
* Authenticate the user and return the Account Number
*/
@Override
public String getAccountNo() {
System.out.print("Password: ");
String tmpPwd = scanner.nextLine();
if (password == null || password.equals(tmpPwd)) {
return client.getAccountNo();
} else {
System.out.println("ProtectionProxy: Illegal password!");
return "";
}
}
}
public class ProtectionProxyExample {
public static void main(String[] args) {
Client client = new ProtectionProxyClientImpl("thePassword");
System.out.println();
ConsoleSystem.out.println("main received: " + client.getAccountNo());
}
}
|