Proxy
parent
76d38e0048
commit
8590315d29
|
@ -0,0 +1,82 @@
|
|||
package DesignPatterns.strukturellen_Entwurfsmustern.Proxy_Pattern;
|
||||
|
||||
|
||||
//Schritt 1: Definiere das gemeinsame Interface (Subject)
|
||||
interface Bankkonto {
|
||||
void einzahlen(double betrag);
|
||||
|
||||
void abheben(double betrag);
|
||||
}
|
||||
|
||||
|
||||
//Schritt 2: Erstelle das echte Bankkonto (RealSubject)
|
||||
class EchtesBankkonto implements Bankkonto {
|
||||
private double saldo;
|
||||
|
||||
@Override
|
||||
public void einzahlen(double betrag) {
|
||||
saldo += betrag;
|
||||
System.out.println(betrag + " € eingezahlt. Neuer Kontostand: " + saldo + " €.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abheben(double betrag) {
|
||||
if (saldo >= betrag) {
|
||||
saldo -= betrag;
|
||||
System.out.println(betrag + " € abgehoben. Neuer Kontostand: " + saldo + " €.");
|
||||
} else {
|
||||
System.out.println("Nicht genügend Guthaben.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Schritt 3: Erstelle den Proxy
|
||||
public class BankkontoProxy implements Bankkonto {
|
||||
private EchtesBankkonto echtesBankkonto;
|
||||
private String zugangscode;
|
||||
|
||||
public BankkontoProxy(String zugangscode) {
|
||||
this.echtesBankkonto = new EchtesBankkonto(); // Echtes Konto
|
||||
this.zugangscode = zugangscode; // Zugriffskontrolle
|
||||
}
|
||||
|
||||
private boolean autorisieren(String eingegebenerCode) {
|
||||
return zugangscode.equals(eingegebenerCode); // Vergleich des Sicherheitscodes
|
||||
}
|
||||
|
||||
@Override
|
||||
public void einzahlen(double betrag) {
|
||||
// Sicherheitsprüfung, bevor Zugriff gewährt wird
|
||||
System.out.println("Sicherheitsüberprüfung...");
|
||||
if (autorisieren("1234")) { // Beispiel: Der Code ist "1234"
|
||||
echtesBankkonto.einzahlen(betrag);
|
||||
} else {
|
||||
System.out.println("Zugriff verweigert: Ungültiger Code.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abheben(double betrag) {
|
||||
System.out.println("Sicherheitsüberprüfung...");
|
||||
if (autorisieren("1234")) {
|
||||
echtesBankkonto.abheben(betrag);
|
||||
} else {
|
||||
System.out.println("Zugriff verweigert: Ungültiger Code.");
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Erstelle einen Proxy mit einem Zugangscode
|
||||
Bankkonto bankkonto = new BankkontoProxy("1234");
|
||||
|
||||
// Führe eine Transaktion durch
|
||||
bankkonto.einzahlen(100); // Sicherheitsüberprüfung -> Geld wird eingezahlt
|
||||
bankkonto.abheben(50); // Sicherheitsüberprüfung -> Geld wird abgehoben
|
||||
|
||||
// Versuch, ohne richtigen Code auf das Konto zuzugreifen
|
||||
Bankkonto falscherZugang = new BankkontoProxy("5678");
|
||||
falscherZugang.abheben(10); // Sicherheitsüberprüfung -> Zugriff verweigert
|
||||
|
||||
}
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue