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